Функции против функции аннотаций

From TradingView Wiki
Jump to: navigation, search
Language: English  • 日本語 • Русский


Pine кроме операторов, имеет также функции и функции аннотации. Иногда, для краткости, это руководство будет относиться к функциям аннотации как к просто аннотациям. Синтаксически они схожи (однако есть некоторые различия, которые будут обсуждаться), но они имеют разные цели и эффекты использования.

Функции используются для вычисления значений и всегда возвращают результат. Функции никогда не имеют побочных эффектов. Вызовы функций используются в выражениях вместе с операторами. По сути, они определяют алгоритм расчета. Функции делятся на встроенные или пользовательские (определяемые пользователем). Примеры встроенных функций: sma, ema, iff.

Функции аннотаций используются для определения метаинформации, которая описывает создаваемый индикатор (они также имеют побочные эффекты). Все аннотации встроены. Аннотации могут

  • Присвоить имя индикатору
  • Определить, какие переменные отображаются как входящие, так и исходящие (по умолчанию также можно назначить имя и значения по умолчанию для входящих переменных). Исходящие переменные отображаются на диаграмме в виде графиков или других макетов.
  • Некоторые другие визуальные эффекты (например, цвет фона)

Название, цвет и стиль отображения каждого графика определяются в аннотациях. Примеры функции аннотаций: study, input, plot.

Несколько аннотаций имеют не только побочные эффекты (в форме определения метаинформации), но и возвращают результат. ‘Plot’ and ‘hline’ это такие аннотации. Однако этот результат можно использовать только в других аннотациях и не может принимать участие в вычислениях индикатора (см. аннотация ‘fill’).

Синтаксически пользовательские функции, встроенные функции и функции аннотации схожи в использовании внутри скрипта: для использования функции или аннотации следует указать ее имя, а также список фактических аргументов в круглых скобках. Основное различие заключается в использовании семантики. Кроме того, существует разница в передаче аргументов - аннотации и встроенные функции принимают аргументы ключевого слова, а пользовательские функции - нет (примечание к выпуску kwargs для встроенных функций).

Вызовы функций позволяют передавать аргументы только по положению. Для большинства языков программирования это единственный доступный метод передачи аргументов. Вызовы функции аннотации также принимают аргументы ключевых слов. Это позволяет указать только часть аргументов, оставляющих других по умолчанию. Сравните следующее:

study('Example', 'Ex', true)

а также

study(title=Example, shorttitle=Ex, overlay=true)

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

study(precision=3, Example)

Предыдущая статья: Операторы, Следующая: Выражения, декларации и операторы, Вверх: Pine Script Tutorial/ru