Как 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 или список options | 3, не меньше 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,5 | 103,83 |
| Период 5 | (100 + 102 + 101 + 105 + 104) / 5 + 0,5 | 102,90 |
| Источник open, период 3 | (100 + 104 + 103) / 3 + 0,5 | 102,83 |
| Смещение 0,75, один щелчок стрелки вверх | 103,33 + 0,75 | 104,08 |
| Флажок снят | расчёт тот же | линии нет |
Учебный пример: одна настройка меняет значение линии
учебная схема · не котировка и не сигнал
Источник close: период 3 и период 5
Период 3: источник close и open
- 1Период 3 берёт три последних закрытия, период 5 все пять: линия опускается с 103,83 до 102,90
- 2Цены открытия ниже закрытий ровно на 1, поэтому смена источника сдвигает линию с 103,83 до 102,83
На своём графике проверка та же: возьмите три последних закрытых бара, посчитайте среднюю вручную и прибавьте смещение. Если число не совпало, сначала перепроверьте ручной счёт. Считать нужно по закрытому бару и по тому же ряду, что выбран в поле «Источник», а значение на графике может быть округлено. Потом посмотрите в код: подставлена ли переменная поля в ta.sma() и в plot(). С флажком проверка другая. При снятом флажке plot() получает na, а такое значение ничего не рисует. Сам расчёт при этом продолжается.
Текущие значения полей удобно сверять прямо на графике. По умолчанию они показаны рядом с названием скрипта в строке статуса и в окне данных, кроме флажков и цветов. Формула средней подробно разобрана в материале скользящая средняя: формула и расчёт, а работа с окном настроек готовых индикаторов описана в ответе как настроить индикатор в TradingView.
Риски и ограничения. Цены в примере и на схеме вымышленные, это учебный расчёт, а не рыночные данные. Код собран по руководству для шестой версии Pine Script. Перед работой сохраните его в редакторе и убедитесь, что он компилируется без ошибок: пример написан под шестую версию, с другими версиями языка мы его не сверяли. Название вкладки Inputs тоже сверьте с экраном, в русском интерфейсе оно может отличаться. Подбор параметров под прошлые данные не обещает того же результата в будущем. Торговля связана с риском потери капитала. Материал образовательный, это не индивидуальная инвестиционная рекомендация.
Источники
- Руководство Pine Script v6: Inputs - функции input, их параметры, две формы вызова для целых и дробных полей, пересчёт скрипта после смены значения.
- Type system в руководстве Pine Script v6 - квалификаторы const, input, simple и series, тип результата input.source.
- StockCharts ChartSchool: скользящие средние - формула простой скользящей средней.





