Input в Pine Script: как задать настройки индикатора

Обложка статьи «Input в Pine Script: как задать настройки индикатора»: Панель настроек с полем числа, ползунком и флажком, рядом свечи и две линии средней, сплошная и пунктирная

Как input связывает код и поля настроек?

Вызов функции input.*() рисует поле на вкладке Inputs и отдаёт его значение переменной, которую вы ставите в расчёт. Руководство TradingView показывает это на простой скользящей средней. Пока в коде написано ta.sma(close, 20), поменять период можно только правкой кода. С input период и источник выбирают в окне настроек.

Ниже учебный индикатор с четырьмя полями. Он собран из приёмов того же руководства для шестой версии языка.

//@version=6
indicator("SMA с настройками", "", true)
lengthInput = input.int(3, "Период", minval = 1)
offsetInput = input.float(0.5, "Смещение", step = 0.25)
showInput   = input.bool(true, "Показывать линию")
sourceInput = input.source(close, "Источник")
ma = ta.sma(sourceInput, lengthInput) + offsetInput
plot(showInput ? ma : na, "SMA")

Первый аргумент каждой функции задаёт значение по умолчанию, второй даёт подпись поля. Поля идут на вкладке в порядке вызовов, а руководство по стилю советует ставить их в начало скрипта. Окно настроек открывается двойным щелчком по названию индикатора на графике. Вставка и сохранение самого кода описаны в материале про редактор Pine Script, а устройство языка в целом разобрано в руководстве Pine Script: что это за язык.

Как выбрать тип поля и ограничить значения?

Функцию выбирают по тому, что вводит человек: целое число, дробное, флажок или ряд цен. Ограничения ставят одним из двух способов, и смешивать их нельзя.

Что настраиваемФункцияЧем ограничитьВ примере
Период, число баровinput.int()minval, maxval, step или список options3, не меньше 1
Множитель, смещениеinput.float()те же параметры0,5 с шагом 0,25
Показать или скрытьinput.bool()флажок, два состояниявключено
Ряд цен для расчётаinput.source()цены бара и линии других скриптовclose

Четыре правила из руководства, которые легко нарушить.

  • Список или границы. У input.int() и input.float() две формы вызова: одна со списком options, другая с minval, maxval и step. Строка input.int(3, "Период", options = [3, 5, 8], minval = 1) не подходит ни под одну из них.
  • Значение по умолчанию из списка. Если поле использует options, первый аргумент обязан быть одним из элементов списка.
  • Только константы. Большинство параметров требуют постоянных значений, поэтому результат одного input нельзя поставить в minval другого. Исключение есть: параметр active принимает значение флажка и позволяет гасить поле, пока флажок снят.
  • Источник живёт по своим правилам. input.source() возвращает ряд, который меняется от бара к бару. Там, где код ждёт значение типа «input float», такой результат не подойдёт.

Нижнюю границу периода лучше задать сразу. В руководстве прямо сказано ограничивать минимальную длину средней единицей или двойкой, чтобы код не выдавал неожиданных результатов. Шаг step относится к стрелкам поля: на столько меняется число за один щелчок, по умолчанию на 1.

Как проверить результат после изменения input?

Меняйте по одному полю и сверяйте число на последнем баре с ручным расчётом. Любая правка на вкладке Inputs заставляет скрипт заново исполниться на всех доступных данных, так что линия сразу показывает новый результат.

Возьмём пять учебных баров. Цены закрытия: 100, 102, 101, 105, 104. Открытие каждого бара на 1 ниже: 99, 101, 100, 104, 103. Простая средняя, как её описывает StockCharts, равна сумме цен за период, делённой на число периодов. Наш индикатор прибавляет к ней смещение.

Что изменилиРасчёт на пятом бареЛиния
Ничего: период 3, close, смещение 0,5(101 + 105 + 104) / 3 + 0,5103,83
Период 5(100 + 102 + 101 + 105 + 104) / 5 + 0,5102,90
Источник open, период 3(100 + 104 + 103) / 3 + 0,5102,83
Смещение 0,75, один щелчок стрелки вверх103,33 + 0,75104,08
Флажок снятрасчёт тот желинии нет

Учебный пример: одна настройка меняет значение линии

учебная схема · не котировка и не сигнал

Источник close: период 3 и период 5

Источник close: период 3 и период 5Период 3: 103,83Период 5: 102,901

Период 3: источник close и open

Период 3: источник close и openПо close: 103,83По open: 102,832
  1. 1Период 3 берёт три последних закрытия, период 5 все пять: линия опускается с 103,83 до 102,90
  2. 2Цены открытия ниже закрытий ровно на 1, поэтому смена источника сдвигает линию с 103,83 до 102,83
Схема учебная, цены вымышленные. Слева меняется только период, справа только источник. Уровни показывают значение индикатора на пятом баре вместе со смещением 0,5.

На своём графике проверка та же: возьмите три последних закрытых бара, посчитайте среднюю вручную и прибавьте смещение. Если число не совпало, сначала перепроверьте ручной счёт. Считать нужно по закрытому бару и по тому же ряду, что выбран в поле «Источник», а значение на графике может быть округлено. Потом посмотрите в код: подставлена ли переменная поля в ta.sma() и в plot(). С флажком проверка другая. При снятом флажке plot() получает na, а такое значение ничего не рисует. Сам расчёт при этом продолжается.

Текущие значения полей удобно сверять прямо на графике. По умолчанию они показаны рядом с названием скрипта в строке статуса и в окне данных, кроме флажков и цветов. Формула средней подробно разобрана в материале скользящая средняя: формула и расчёт, а работа с окном настроек готовых индикаторов описана в ответе как настроить индикатор в TradingView.

Риски и ограничения. Цены в примере и на схеме вымышленные, это учебный расчёт, а не рыночные данные. Код собран по руководству для шестой версии Pine Script. Перед работой сохраните его в редакторе и убедитесь, что он компилируется без ошибок: пример написан под шестую версию, с другими версиями языка мы его не сверяли. Название вкладки Inputs тоже сверьте с экраном, в русском интерфейсе оно может отличаться. Подбор параметров под прошлые данные не обещает того же результата в будущем. Торговля связана с риском потери капитала. Материал образовательный, это не индивидуальная инвестиционная рекомендация.

Источники

График TradingView с сигналами Buy и Sell индикатора Midas
Midas multi-индикатор for TradingViewОдин из самых продвинутых индикаторов для трейдинга
  • Сигналы без перерисовки
  • Интерактивный теханализ
  • 7 стратегий на выбор
Midas multi-индикатор for TradingViewСигнал, стоп и 3 цели - прямо на графике
  • Сигнал фиксируется по закрытию свечи
  • Стоп и 3 цели строятся автоматически
  • План сделки виден до входа