LootX

Імпорт із Pine Script

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

Як перенести індикатор з Pine Script у LootScript: де кнопка імпорту, що конвертер змінює автоматично, що позначає для перевірки й як довести результат.

Якщо індикатор уже написаний на Pine Script, переписувати його вручну не потрібно. термінал конвертує файл .pine у LootScript: змінює синтаксис і імена, додає відсутнє й записує на початок файлу нотатки про те, що змінено й де конвертеру довелося вгадувати.

Конвертер — перекладач, а не шар сумісності. Він не гарантує тих же чисел, що в оригінальній середовищі, і не додає в термінал функцій, яких там немає. Тому після імпорту скрипт потрібно відкрити, прочитати нотатки й перевірити на графіку. LootScript розроблено незалежно і не пов’язано з TradingView: синтаксис навмисно схожий, але мови не сумісні.

Як імпортувати

Відкрийте вікно індикаторів

Натисніть ƒ на панелі графіка — відкриється вікно Індикатори.

Натисніть «Імпорт…»

Кнопка стоїть поруч із рядком пошуку. Оберіть файл .pine, .loot або .txt. Файл .loot потрапить у бібліотеку як є. Файл .pine — текстовий файл, схожий на Pine Script — пройде через конвертер.

Прочитайте підсумок

Під рядком пошуку з’явиться один із рядків:

  • «Імпортовано «…»» — нотаток немає, скрипт готовий;
  • «Імпортовано «…»: нотаток конвертера — N, див. шапку скрипта»;
  • «Імпортовано «…», але скрипт не компілюється (помилок: N)…» — поруч із текстом першої помилки.

Вікно переключиться на розділ Мої скрипти, а в пошук підставиться ім’я нового скрипта.

Відкрийте скрипт у редакторі

Прочитайте шапку з нотатками й виправте те, на що вона вказує. Як — нижче.

Імпорт не перезаписує скрипт з тим самим ім’ям: новий отримає суфікс, наприклад -2. Початковий файл не змінюється.

Через папку скриптів

Можна просто покласти файл имя.pine в папку скриптів — на Windows це %APPDATA%\TradingTerminal\scripts. При наступному запуску термінал створить поруч имя.loot. Якщо имя.loot уже є, він його не чіпає — ваші правки не пропадуть. Щоб сконвертувати заново, наприклад після оновлення терміналу, видаліть .loot.

Що робить конвертер

  • Відступи → фігурні дужки. Блоки if, else if, else, циклів і функцій отримують дужки. Рядки-продовження склеюються в один.
  • Функції. f(x) => стає func f(x), а останній вираз функції — явним return.
  • Цикли. Включний for i = 0 to 9 стає напіввідкритим for i in 0 .. 10. Напрям береться з кроку або з літералів меж; якщо його не видно, конвертер вважає цикл зростаючим і пише про це.
  • Умови-значення. if з одним виразом у гілках перетворюється на тернарний оператор, switch отримує дужки.
  • Прозорість → альфа. У Pine Script прозорість йде від 0 до 100, де 0 — непрозоро. У LootScript альфа — від 0 до 255, де 255 — непрозоро. color.new(c, 50) стане color.new(c, 128), а аргумент transp= перетвориться на color.new(…) навколо кольору.
  • Імена. Старі імена без простору отримують його: sma → ta.sma. study → indicator, security → request.security, tostring → str.tostring, syminfo.* → sym.*, timeframe.* → tf.*. Коротка форма input(…) отримує тип: input.int, input.source і так далі.
  • Зайняті імена. Змінна, чиє ім’я в LootScript — ключове слово або простір (delta, oi, tf, sym, func …), отримує підкреслення в кінці скрізь, де зустрічається: delta → delta_.
  • Зайві аргументи — ті, яких у функції в LootScript немає, — знімаються.
  • Оголошення. Якщо у файлі не було indicator(…) або strategy(…), конвертер додасть indicator з ім’ям файлу.
  • Коментарі та порожні рядки лишаються на своїх місцях.

Конвертер не відмовляється від жодного файлу. Рядок, який він не зрозумів, він не викидає, а залишає коментарем // [не разобрано] … на попередньому місці.

Шапка з нотатками

Перша стрічка шапки каже, звідки файл, — «Імпортовано зі скрипта на Pine Script (версія 5). Нотатки конвертера:». Далі — по рядку на кожну правку, у порядку рядків вихідника: «Рядок N: вид: що — подробиці». Нотатки пишуться мовою інтерфейсу.

Вид нотатки Що означає Перевірити?
перейменовано Ім’я замінено на аналог у LootScript ні
перераховано Прозорість переведена в альфу ні
переписано Змінилася форма: цикл, return, тип короткого input поглянути
ім’я «…» зайнято в LootScript Змінній додано підкреслення ні
оголошення indicator(…) не було Оголошення додано з імені файлу ні
аргумент знято У функції в LootScript немає такого параметра так
припущення Конвертер вгадав: напрям циклу, тип вводу, який не вдалося вивести так
немає в цій збірці Такої функції в терміналі немає — скрипт не скомпілюється з помилкою «невідоме ім’я» так
не розібрано Рядок не вдалося розібрати, вона збережена коментарем так

Коли перевірите, шапку можна видалити — це звичайні коментарі.

Приклад

Невеликий індикатор на Pine Script: стовпчики розмаху бара, підсвічені, коли розмах удвічі більше середнього.

PINE
//@version=5
indicator("Range spike", overlay=false)
len = input.int(20, "Length")
avgRange(n) =>
    r = high - low
    ta.sma(r, n)
base = avgRange(len)
spike = high - low > base * 2
plot(high - low, style=plot.style_columns, color=spike ? color.orange : color.new(color.gray, 60))
plot(base, color=color.blue, trackprice=true)

Так його записує конвертер:

Loot
// Импортировано из скрипта на Pine Script (версия 5). Заметки конвертера:
//
// Строка 6: переписано: avgRange — неявный возврат последнего оператора записан как return
// Строка 9: пересчитано: transp → alpha — прозрачность 0…100 пересчитана в альфу 0…255
// Строка 10: аргумент снят: plot: trackprice — такого параметра в LootScript нет

indicator("Range spike", overlay = false)
len = input.int(20, "Length")
func avgRange(n) {
    r = high - low
    return ta.sma(r, n)
}
base = avgRange(len)
spike = high - low > base * 2
plot(high - low, color = spike ? color.orange : color.new(color.gray, 102), style = plot.style_columns)
plot(base, color = color.blue)

Функція отримала дужки і return, прозорість 60 стала альфою 102, а trackprice знято — такого параметра немає. Нотатка «аргумент знято» просить перевірити, чи потрібний цей параметр за змістом. Тут він лише малював лінію останнього значення, і скрипт працює без нього.

Як перевірити і допрацювати

  1. Прочитайте шапку. Почніть з рядків з видами «аргумент знято», «припущення», «немає в цій збірці» та «не розібрано».
  2. Подивіться вкладку «Проблеми» у консолі редактора. Скрипт з помилками на графік не додасться.
  3. Додайте на графік і порівняйте з тим, що показував оригінал, на кількох ділянках історії.
  4. Попросіть помічника. Відкрийте ШІ‑помічника і наберіть /fix — він скомпілює скрипт, прогонить його на свічках і виправить помилки. Можна додати уточнення: /fix розбери нотатки конвертера в шапці. /explain розповість, що робить скрипт.

Що не переноситься

  • Функції, яких немає в терміналі. Ім’я лишається в коді, нотатка «немає в цій збірці» і помилка компілятора вказують на те саме місце. Замініть виклик вручну або попросіть помічника підібрати аналог.
  • Багаторядкові рядки, імпорт чужих бібліотек, експорт функцій. Конвертер переносить те, що може записати, і позначає решту.
  • Більше трьох ліній. Панель графіка малює тільки перші три plot скрипта. Зайві ряди рознесіть по окремих скриптах.
  • Реальна торгівля. Оголошення strategy(…) переноситься, але стратегія LootScript торгує тільки в тестері стратегій — на симульованому рахунку.

Далі

FAQ

Чи буде імпортований індикатор обчислюватися так само, як оригінал?
Не обов'язково. Конвертер змінює синтаксис і імена, але одноіменні функції LootScript місцями обчислюються інакше, а пропуск даних — завжди na. Порівняйте скрипт з оригіналом на графіку.
Що робити, якщо після імпорту скрипт не компілюється?
Відкрийте його в редакторі і прочитайте шапку: зауваження «немає в цій збірці», «аргумент знято», «допущення» і «не розібрано» вказують на проблемні рядки. Команда /fix у ШІ‑помічнику виправить помилки.
Чи можна імпортувати одразу кілька файлів?
Кнопка «Імпорт…» бере один файл. Кілька файлів .pine можна помістити в папку скриптів — термінал сконвертує їх при наступному запуску.