Первый скрипт
Пошагово: как открыть редактор 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и другие.- Цвет границ — выражение, поэтому он считается на каждом баре отдельно.
Добавьте скрипт на график и дважды щёлкните по его строке в легенде (или нажмите в ней значок настроек). На вкладке Входные данные — три ваши настройки: поменяйте период, и линии пересчитаются сразу. Значения запоминаются для этого индикатора на этом графике; кнопка По умолчанию вернёт те, что написаны в коде. На вкладке Стиль — цвет средней и толщина каждой линии, на вкладке Видимость — флажки, чтобы спрятать любую из трёх линий. Цвета границ в настройках нет: его выбирает сам скрипт на каждом баре.