LootX

Помилки компіляції та виконання

нове Оновлено 30 вересня 2026 р. Ця сторінка у PDF

Усі коди LS, які показує редактор і графік LootScript: текст повідомлення, причина та спосіб виправлення, часті помилки з прикладами, межі виконання й випадки, коли замість помилки виходить na.

Кожне повідомлення компілятора й виконувача LootScript починається з коду виду LS2008. Код не змінюється між версіями і не залежить від мови інтерфейсу, тому за ним зручно шукати: тут зібрані всі коди, які може показати термінал, з текстом повідомлення, причиною та способом виправлення.

Повідомлення виводяться російською, якщо інтерфейс терміналу російською, і англійською на будь-якій іншій мові. Спочатку — помилки, які трапляються найчастіше, потім помилки виконання і повна таблиця.

Де видно помилки

При компіляції. Редактор компілює скрипт при кожній паузі набору. Знайдене потрапляє у вкладку «Проблеми» у нижній частині редактора: код, текст і позиція виду «Рядок 6:6». Подвійний клік по рядку переводить курсор до місця помилки. У заголовку редактора відображається підсумок: «ок · 12 мс», «попереджень: 2» або «помилок: 1».

При виконанні. Скрипт без помилок компіляції може зупинитися на якомусь барі: закінчився бюджет операцій, індекс вийшов за межі масиву, невідомий інструмент. Тоді у вкладці «Вивід» з’явиться рядок «Скрипт зупинено: LS6004: …», а у вікні тестера стратегій — та сама причина. Інші скрипти, панелі й сам термінал продовжують працювати.

Діагностики бувають трьох рівнів:

Рівень Що означає Що з графіком
Помилка Скрипт не зібраний На графік не додається: «Скрипт з помилками на графік не кладёться — див. вкладку «Проблеми»». Якщо скрипт уже на графіках, там залишається попередня робоча версія
Попередження Скрипт зібраний, але результат може вводити в оману: наприклад, перемальовується на живому барі Скрипт працює
Зведення Скрипт зібраний, але якась його налаштування нічого не робить Скрипт працює

Як влаштовані коди

Коди Етап Про що
LS0001–LS0009 Читання тексту Символи, рядки, числа, кольори, директива #version
LS1000–LS1012 Розбір Дужки, блоки, порядок операторів, оголошення скрипта
LS2000–LS2030 Типи й імена Невідомі імена, типи, аргументи, na
LS3000–LS3033 Зміст програми ta.* у гілках, рекурсія, стратегії, бібліотеки, request.security
LS4000–LS4009 Межі компіляції Надто багато рядів, виводів, викликів
LS5000–LS5013 Перемальовування і чесність тесту Значення, які на історії виглядають інакше, ніж у живому режимі
LS6000–LS6036 Виконання Бюджети, індекси, колекції, рядки, об’єкти малювання
LS0999 Внутрішній збій Дефект компілятора — про нього потрібно повідомити

Часті помилки компіляції

LS1009 — немає оголошення скрипта

«Немає оголошення скрипта — почніть з indicator(“Назва”)». Першим оператором файлу має стояти indicator(...), strategy(...) або library(...). Та сама помилка з’являється, якщо оголошення є, але вище нього щось написано. Коментарі й директива #version 1 не заважають.

Loot
// Так не можна: оголошення не перше
len = input.int(14, "Довжина")
indicator("RSI")
Loot
indicator("RSI")
len = input.int(14, "Довжина")

Друге оголошення в тому ж файлі дає LS1008: у скрипта воно одне.

LS2002 — невідоме ім’я

«Невідоме ім’я «…» — перевірте написання або оголосіть його вище». Найчастіше це опечатка або функція без простору імен: всі індикаторні функції в ta, математика — в math, кольори — в color.

Loot
avg = sma(close, 20)
Loot
avg = ta.sma(close, 20)

Та сама помилка буде, якщо змінну читають раніше рядка, де її оголосили. Повний список імен — у довіднику функцій.

LS2008 — порівняння з na

«Порівняння з na завжди хибне — використовуйте na(x)». Будь‑яке порівняння з na, включно з == і !=, дає false, тому компілятор таку запис не пропустить.

Loot
x = ta.sma(close, 50)
plot(x == na ? close : x)
Loot
x = ta.sma(close, 50)
plot(na(x) ? close : x)

Коротше те саме пишеться через ??: plot(x ?? close).

LS2014 — значення змінюється від бару до бару там, де потрібна константа

««…» в «…» вимагає значення не слабшого за input, а передано series — візьміть input.*(…) або літерал». Довжина вікна ta.* має бути відома до першого бару. Довжина, яку вибирають за умовою на кожному барі, не підходить.

Loot
len = close > open ? 10 : 20
avg = ta.sma(close, len)

Порахуйте обидва варіанти і вибирайте результат, а не довжину:

Loot
fast = ta.sma(close, 10)
slow = ta.sma(close, 20)
avg  = close > open ? fast : slow

Якщо довжину має задавати користувач, візьміть її з input.int(...).

LS3004 — виклик ta.* залежить від змінної з гілки

«Аргумент «…» не можна обчислити поза гілкою — винесіть виклик ta.* на верхній рівень». Функції ta.* пам’ятають попередні бари, тому компілятор обчислює їх на кожному барі, навіть якщо виклик написаний всередині if. Якщо аргумент оголошено лише всередині гілки, на інших барах його просто нема.

Loot
var float avgBody = na
if close > open {
    body = close - open
    avgBody := ta.sma(body, 10)
}
Loot
body    = close - open
avgBody = ta.sma(body, 10)

LS2017, LS2007, LS1006 — рядки, умови й порівняння

У цих трьох помилок спільна причина: LootScript не приводить типи мовчки.

Код Повідомлення Як виправити
LS2017 «Рядок не можна додавати до числа (… + …) — використовуйте str.tostring(…)» "RSI " + str.tostring(r) замість "RSI " + r
LS2007 «Умова має бути bool, а тут …» if volume > 0 замість if volume — числа не мають істинності
LS1006 «Порівняння не ланцюжаться — напишіть a < b and b < c» low < close and close < high замість low < close < high

LS2018 і LS2019 — ім’я вже зайнято

««…» вже оголошено в цій області» (LS2018) — змінну оголосили вдруге через =. Щоб змінити значення, використовуйте :=.

Loot
level = high
level := low

««…» затемнює вбудоване ім’я — оберіть інше» (LS2019) — змінна, функція чи тип названі так само, як вбудований ряд чи функція: close, time, hour, volume. Перейменуйте: startHour замість hour. Імена просторів на кшталт color або position для змінних можна використовувати.

LS2004 і LS2005 — аргументи виклику

««…» очікує … аргумент(ів), а передано …» (LS2004) і «У «…» немає параметра «…»» (LS2005). Звірте виклик із сигнатурою в довіднику: імена параметрів пишуться точно так, як там вказано.

Loot
plot(close, colour = color.red)
Loot
plot(close, color = color.red)

LS3011 і LS5011 — стратегії

«strategy.* доступно лише в strategy(…)» (LS3011): заявки і стан позиції є тільки у скрипта, оголошеного через strategy(...). Замініть indicator("…") на strategy("…").

«Стратегія читає «…»: у біржового стакана і стрічки угод немає історії, бектест був би фікцією» (LS5011): стратегія перевіряється на історії, а у book.* і tape.* історії нема — на кожному минулому барі там na.

Loot
strategy("Перекіс стакана")
if book.imbalance(10) > 0.5 {
    strategy.entry("L", strategy.long)
}

Для історії стакана є простір depth: там, де стакан записано, воно дає значення на кожному барі.

Loot
strategy("Перекіс стакана")
if depth.imbalance(1.0) > 0.5 {
    strategy.entry("L", strategy.long)
}

LS5000–LS5006 — попередження про перемальовування

Ці попередження не заважають скрипту працювати. Вони кажуть, що лінія на історії виглядатиме інакше, ніж її бачили вживу:

  • LS5001 — на графік доходить значення, яке є лише на живому барі (barstate.isrealtime, barstate.isnew).
  • LS5000 — на графік доходить змінна varip: вона накопичує тики живого бара, яких в історії нема.
  • LS5006 — на графік доходять book.* або tape.*: на історії ряд пустий.
  • LS5003 — значення старшого таймфрейму з request.security без [1]: незакритий бар ще зміниться.
  • LS5002 — lookahead = true в request.security: на історії скрипт бачить майбутнє.
  • LS5005 — на графік доходить math.random або timenow: два прогони дадуть різні лінії.

Якщо так і задумано — наприклад, індикатор потрібен лише для живої торгівлі — попередження можна залишити.

LS3016 — налаштування прийнята і нічого не робить

Це зведення, а не помилка. Воно трапляється в скриптах, перенесених з інших платформ: параметр існує для сумісності, але в терміналі на нього нічого не впливає. Друга частина повідомлення пояснює чому.

Що написано Пояснення в повідомленні
maxBarsBack в оголошенні історія завантажується колонкою цілком
format, precision, scale в оголошенні шкалою значень і її форматом керує термінал
timeframe в оголошенні скрипт рахується на таймфреймі графіка, інший дає request.security
Товщина, стиль або інша налаштування виводу, задана виразом, а не константою (колір plot та відміток може змінюватися по барам) ця збірка читає таку налаштування лише як константу
color у четвертого і наступних plot панель малює тільки перші три ряди
location.absolute у plotshape або plotchar у відмітки немає ряду, до значення якого її можна притиснути
display, якого у ряду немає у цього ряду немає такої поверхні

Помилки виконання

Помилка виконання зупиняє скрипт на тому барі, де вона трапилася. Текст з’являється у вкладці «Вивід» у вигляді «Скрипт зупинено: LS6004: …».

LS6004 і LS6005 — скрипт працює занадто довго

«Скрипт вичерпав бюджет операцій на бар — спростіть цикл» (LS6004) і «Скрипт перевищив ліміт часу на проходження» (LS6005). На кожному барі є бюджет у 2 000 000 операцій. Час теж обмежено: весь прогін по історії — 2 секунди, один тік живого бара — 20 мс. Майже завжди причина — цикл, який не завершується або обходить забагато даних на кожному барі.

Loot
var int n = 0
i = 0
while i < 10 {
    n := n + 1
}
Loot
var int n = 0
i = 0
while i < 10 {
    n := n + 1
    i := i + 1
}

LS6002 і LS5004 — читання майбутнього

Індекс історії x[n] не може бути від’ємним: close[-1] означав би наступний бар. Якщо від’ємне число написано прямо в тексті, компілятор зупинить його відразу (LS5004). Якщо воно вийшло при обчисленні, скрипт зупиниться на барі з помилкою «Від’ємне зміщення історії — читати майбутнє не можна» (LS6002). Індекс, більший за число завантажених барів, помилкою не вважається — він дає na.

LS6001, LS6007, LS6019 — колекції й об’єкти

  • LS6001 «Індекс … поза межами» — array.get, array.set або matrix.get поза розміром. Перевіряйте array.size(a) перед зверненням.
  • LS6007 «Звернення до порожнього об’єкта (na)» — колекцію оголосили, але не створили: var array<float> a = na, а потім a.push(x). Створіть її через array.new<float>().
  • LS6019 «Об’єкт малювання вже видалено або витіснено по стелі — створіть його заново». Одночасно живе 500 об’єктів одного виду, найстаріший витісняється. Підніміть ліміт через maxLinesCount, maxLabelsCount або maxBoxesCount в оголошенні або пере використайте об’єкт через set_*.

LS6017 і LS6018 — інструмент і таймфрейм у request.security

«Символ «…» невідомий — перевірте формат «МАЙДАНЧИК:СИМВОЛ» або задайте ignore_invalid_symbol = true» (LS6017) і «Таймфрейм «…» не розбирається — очікується «5», «60», «4h», «1D», «1W»» (LS6018). З ignore_invalid_symbol = true невідомий інструмент дає na замість зупинки.

Межі виконання

Що обмежено Межа Код при перевищенні
Операцій на бар 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 при компіляції

Коли помилки немає, але значення відсутнє

Багато ситуацій, які в інших мовах зламали б програму, в LootScript дають na — пропуск на графіку, а не зупинку:

  • арифметика з na дає na: close - x при порожньому x — теж порожньо;
  • x[n] глибше за початок історії — na;
  • цілочисельний поділ на нуль — na, а дробовий поділ на нуль скрипт не зупиняє;
  • book.*, tape.* і screener.* на історичних барах — na;
  • кластери, дельта, відкритий інтерес і історія біржового стакана — na на барах, де даних нема. Перевіряйте cluster.available, delta.available і суміжні прапорці;
  • ta.* на перших барах, поки вікно не заповнилося, — na.

na на графіку ніколи не малюється нулем: лінія переривається. Щоб підставити значення, використовуйте nz(x), x ?? запасне або 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), а не з імені файлу Перевірте ім’я в оголошенні бібліотеки
LS3019 Бібліотеки «…» версії … немає; встановлені: … Вкажіть встановлену версію
LS3020 «…» всередині request.security: у біржового стакана і стрічки угод немає історії на чужій серії Приберіть book.*, tape.* з виразу
LS3025 Функція «…» оголошена, але не викликається — її тіло перевірено лише пробно (попередження) Викличіть функцію або видаліть
LS3026 «…» вимагає стоп, від якого рахувати розмір: loss/stop у вході або в strategy.exit Додайте стоп до входу або strategy.exit
LS3028 Ця збірка не підтримує: … Перепишіть без цієї конструкції
LS3029 Ветка switch для «…» повторюється — друга недосяжна Приберіть повтор
LS3030 «…» — змінна графіка, а вираз request.security рахується на іншій серії; передайте значення через input.* або порахуйте його в середині виразу Пообчислюйте всередині виразу
LS3031 Бібліотеки імпортують одна одну по колу: … Розірвіть коло імпортів
LS3032 У бібліотеці «…» допустимі тільки оголошення функцій і імпорти — тут … Приберіть інший код з бібліотеки
LS3033 Бібліотека «…» не компілюється (…) — відкрийте її в редакторі і виправте Виправте помилку в самій бібліотеці

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 Дані є лише в реальному часі — на історії ряд пустий (попередження) Для історії біржового стакана використайте 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.

Далі

FAQ

Чому компілятор не пропускає x == na?
Будь-яке порівняння з na хибне, тому така перевірка ніколи не спрацює. Компілятор повідомляє LS2008 — використовуйте na(x) або x ?? запасне значення.
Що означає «Скрипт зупинено: LS6004»?
Скрипт витратив на одному барі більше 2 000 000 операцій — зазвичай через цикл без виходу. Перевірте, що лічильник циклу змінюється і умова коли-небудь стане хибною.
Чому стратегія з book.imbalance не компілюється?
У біржового стакана та стрічки угод немає історії, і тест на минулих барах був би вигадкою — це помилка LS5011. Для історії біржового стакана використовуйте простір depth.
Чи заважає попередження про перемальовку роботі скрипту?
Ні. Попередження LS5000–LS5006 лише повідомляють, що на історії лінія виглядатиме інакше, ніж у реальному часі. Скрипт при цьому працює.