Імпорт із Pine Script
1Імпорт із Pine Script
Як перенести індикатор з 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: стовпчики розмаху бара, підсвічені, коли розмах удвічі більше середнього.
//@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)Так його записує конвертер:
// Импортировано из скрипта на 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 знято — такого параметра немає. Нотатка «аргумент знято» просить перевірити, чи потрібний цей параметр за змістом. Тут він лише малював лінію останнього значення, і скрипт працює без нього.
Як перевірити і допрацювати
- Прочитайте шапку. Почніть з рядків з видами «аргумент знято», «припущення», «немає в цій збірці» та «не розібрано».
- Подивіться вкладку «Проблеми» у консолі редактора. Скрипт з помилками на графік не додасться.
- Додайте на графік і порівняйте з тим, що показував оригінал, на кількох ділянках історії.
- Попросіть помічника. Відкрийте ШІ‑помічника і наберіть
/fix— він скомпілює скрипт, прогонить його на свічках і виправить помилки. Можна додати уточнення:/fix розбери нотатки конвертера в шапці./explainрозповість, що робить скрипт.
Що не переноситься
- Функції, яких немає в терміналі. Ім’я лишається в коді, нотатка «немає в цій збірці» і помилка компілятора вказують на те саме місце. Замініть виклик вручну або попросіть помічника підібрати аналог.
- Багаторядкові рядки, імпорт чужих бібліотек, експорт функцій. Конвертер переносить те, що може записати, і позначає решту.
- Більше трьох ліній. Панель графіка малює тільки перші три
plotскрипта. Зайві ряди рознесіть по окремих скриптах. - Реальна торгівля. Оголошення
strategy(…)переноситься, але стратегія LootScript торгує тільки в тестері стратегій — на симульованому рахунку.
Далі
https://docs.lootx.trade/uk/loot/pine-import