Перший скрипт
Покроково: як відкрити редактор LootScript, написати індикатор із двох рядків, додати його на графік, читати помилки та знайти файл скрипта. Другий приклад — канал із налаштуваннями.
На цій сторінці ви пройдете шлях від порожнього редактора до власного індикатора на графіку: напишете скрипт із двох рядків, побачите, як редактор ловить помилки, дізнаєтеся, де лежить файл, і додасте вікно налаштувань. Знадобиться відкритий графік і ввімкнені скрипти — якщо їх немає у вікні індикаторів, прочитайте розділ Як увімкнути скрипти.
Відкрийте редактор
Відкрийте вікно індикаторів
На панелі графіка натисніть кнопку ƒ — підказка на ній — «Індикатори».
Запустіть редактор
Натисніть Редактор… поруч із полем пошуку або Новий скрипт унизу вікна. Щоб відкрити вже наявний скрипт, знайдіть його в розділі Мої скрипти та натисніть олівець Редагувати скрипт у його рядку (або виділіть рядок і натисніть Ctrl+E).
Знайдіть потрібні кнопки
Редактор відкривається окремим вікном зі своєю кнопкою в панелі завдань — його можна перенести на другий монітор. Угорі — випадаючий список скриптів, кнопки Новий, Зберегти та Додати на графік, внизу — вкладки Проблеми, Журнал і Вивід.
Редактор запам’ятовує панель графіка, з вікна індикаторів якої його відкрили: туди він і додасть скрипт. Якщо редактор відкритий інакше, скрипт потрапить на активну панель графіка.
Напишіть індикатор
Кнопка Новий (Ctrl+N) створює скрипт із шаблону — ковзну середню з одним налаштуванням:
indicator("Без названия", overlay = true)
length = input.int(20, "Length", minval = 1)
plot(ta.ema(close, length), "EMA", color = color.orange)Замініть текст на найкоротший робочий індикатор — просту середню за 20 барів:
indicator("Мой первый индикатор", overlay = true)
plot(ta.sma(close, 20), "Средняя 20", color = color.orange)Що тут написано:
indicator(...)— оголошення, обов’язковий перший рядок будь-якого скрипта. Назва потрапить у список Мої скрипти та в легенду графіка.overlay = trueмалює поверх свічок; зoverlay = falseіндикатор отримає окрему панель під графіком.ta.sma(close, 20)— середнє цін закриття за останні 20 барів.plot(...)— малює лінію: одне значення на кожен бар. Другий аргумент — ім’я лінії в налаштуваннях,color— колір.
Скрипт виконується для кожного бара по черзі, від найстарішого до поточного. Першим 19 барам бракує історії для середньої, тому лінія починається не з лівого краю — це нормально. Скільки барів іде на такий «прогрів», редактор пише в рядку стану внизу.
Під час набору редактор пропонує імена функцій і констант, після відкриття дужки показує параметри функції, а при наведенні на ім’я — його опис. Список підказок можна викликати вручну сполученням Ctrl+Space.
Збережіть і додайте на графік
- Зберегти (Ctrl+S) записує скрипт у папку скриптів. Поки є незбережені правки, перед іменем файлу в заголовку вікна стоїть крапка
•. - Додати на графік (Ctrl+Enter) перевіряє скрипт, зберігає його та кладе на панель графіка. У панелі редактора з’явиться напис: «Мой первый индикатор» додано на графік.
Готово: лінія на графіку, ім’я індикатора — у легенді. Індикатор збережеться в розкладці й повернеться після перезапуску термінала.
Як редактор показує помилки
Скрипт перевіряється сам — за мить після того, як ви перестали друкувати. Результат видно в шапці редактора: компіляція…, потім ок · 12 мс або, якщо щось не так, помилок: 1 чи попереджень: 1.
Спробуйте помилитися: напишіть ta.smaa замість ta.sma. Місце помилки підкреслиться хвилястою лінією, лічильник у шапці покаже помилок: 1, а на вкладці Проблеми з’явиться рядок із кодом помилки, поясненням і позицією:
LS2002 Неизвестное имя «ta.smaa» — проверьте написание или объявите его выше Стр 3:6Подвійне клацання по рядку переносить курсор до місця помилки. У кожної помилки є постійний код виду LS####, а текст одразу підказує, як її виправити. Розбір частих помилок — на сторінці Помилки компіляції та виконання.
Скрипт із помилками на графік не потрапить: Додати на графік відповість «Скрипт із помилками на графік не кладеться — див. «Проблеми»» і переведе курсор до першої помилки. У вікні індикаторів такий скрипт позначається червоною міткою з числом помилок замість мітки Скрипт.
Бувають і помилки під час виконання — наприклад, цикл, який не вкладається у відведений час. Тоді скрипт зупиняється, а причина видна на вкладці Вивід: «Скрипт зупинено: …». Інші індикатори й термінал продовжують працювати.
Правки скрипта, який уже на графіку
Поки ви редагуєте, графік продовжує показувати ту версію, яку ви додали. Щойно в редакторі з’явиться справна версія, відмінна від тієї на графіку, відбуваються дві речі:
- у панелі редактора з’являється кнопка Оновити індикатор;
- у легенді індикатора на графіку з’являється значок оновлення.
Будь-який із них зберігає скрипт і замінює його на всіх графіках, де він стоїть. Додати на графік для скрипта, який уже десь додано, робить те саме — оновлює всі копії, а не кладе другу. Скільки панелей отримають нову версію, показує мітка на графіках: N у шапці редактора.
Де лежать файли
У Windows скрипти зберігаються в папці %APPDATA%\TradingTerminal\scripts\, по одному файлу .loot на скрипт. Це звичайний текст — його можна відкрити будь-яким редактором, скопіювати, покласти в резервну копію. Папка розташована поза папкою встановлення, тому оновлення термінала її не чіпають.
Ім’я файлу утворюється з назви під час першого збереження: пробіли замінюються підкресленням, кирилиця зберігається. «Мой первый индикатор» стане файлом Мой_первый_индикатор.loot.
Коли папка створюється вперше, до неї кладуться шість стартових скриптів — Дві ковзні, RSI із зонами, Імпульс обсягу, Кумулятивна дельта, Інтерес проти ціни та Ставка фінансування річних. Вони лежать у розділі Мої скрипти; їх зручно відкрити й розібрати.
Другий приклад: канал із налаштуваннями
Зробимо скрипт кориснішим: канал із середньої та двох меж на відстані кількох стандартних відхилень. Період, ширину й джерело ціни винесемо в налаштування, а верхню та нижню межі підсвічуватимемо червоним, коли ціна за них виходить.
indicator("Канал вокруг средней", overlay = true)
length = input.int(20, "Период", minval = 2)
mult = input.float(2.0, "Ширина в сигмах", minval = 0.1, step = 0.1)
src = input.source(close, "Источник")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
plot(basis, "Середина", color = color.gray)
plot(upper, "Верх", color = close > upper ? color.red : color.teal)
plot(lower, "Низ", color = close < lower ? color.red : color.teal)Що нового:
- Кожен виклик
input.*стає рядком у вікні налаштувань індикатора, у тому порядку, в якому він написаний.minvalне дасть ввести період менше двох, аstep = 0.1означає, що поле ширини показує один знак після коми. input.sourceперетворюється на випадаючий список рядів:close,open,hl2,volumeта інші.- Колір меж — вираз, тому він обчислюється на кожному барі окремо.
Додайте скрипт на графік і двічі клацніть по його рядку в легенді (або натисніть у ній значок налаштувань). На вкладці Вхідні дані — три ваші налаштування: поміняйте період і лінії перерахуються одразу. Значення запам’ятовуються для цього індикатора на цьому графіку; кнопка За замовчуванням поверне ті, що написані в коді. На вкладці Стиль — колір середньої та товщина кожної лінії, на вкладці Видимість — прапорці, щоб сховати будь-яку з трьох ліній. Кольору меж у налаштуваннях немає: його обирає сам скрипт на кожному барі.