Методы в Pine Script®

7 мар, 2023

Рады сообщить, что в Pine Script® появились методы! Теперь нотация с точкой, в других языках программирования используемая для вызова методов, доступна и в Pine. Использовать новый синтаксис можно двумя разными способами:

  • С пользовательскими функциями — для этого при объявлении функции нужно указать новое ключевое слово method.
  • Со встроенными функциями, которые находятся в пространстве имён array, box, label, line, linefill, matrix и table, если первым параметром такой функции является идентификатор объекта этого типа.

Рассмотрим простой пример, где мы вычисляем среднее значение low для скользящего окна восходящих баров:

//@version=5
indicator("Long stop", "", true)
int lengthInput = input(20)
var pricesArray = array.new<float>(lengthInput)

method maintainQueue(array<float> srcArray, float value) =>
    // Append a new value to the end of the array.
    srcArray.push(value)
    // Remove the oldest value from the beginning of the array.
    srcArray.shift()

if close > open
    // Track the `low` values of up bars.
    pricesArray.maintainQueue(low)

plot(pricesArray.avg(), "Stop")

Наш метод maintainQueue() очень похож на обычную функцию и может использоваться как таковая, но ключевое слово method также позволяет вызывать его через точку после любой переменной с типом array<float>. При таком вызове мы опускаем первый аргумент — например, в pricesArray.maintainQueue(low) мы передаём только один аргумент, value.

Также обратите внимание, как мы используем нотацию метода с функциями из пространства имён array в таких вызовах, как srcArray.push() и srcArray.shift() внутри кода метода, и pricesArray.avg() в последней строке примера.

Больше информации об этом новом функционале можно найти на странице нашего Руководства пользователя, посвященной методам.

Чтобы увидеть методы в действии, посмотрите обновленный код нашего встроенного индикатора Гэпы, который использует как встроенные, так и пользовательские методы для выделения разрывов на графике прямоугольниками:

Мы также обновили код библиотеки ZigZag, чтобы можно было использовать и встроенные, и пользовательские методы:

ZigZag от TradingView

Также объекты и методы можно увидеть в скриптах от сообщества PineCoders:

Flare от Fikira

Recursive Zigzag [Trendoscope] от HeWhoMustNotBeNamed

Recursive Auto-Pitchfork [Trendoscope] от HeWhoMustNotBeNamed

Если вы хотите узнавать об обновлениях Pine, следите за разделом Release notes. Учётная запись PineCoders также транслирует новости об обновлениях в своем Telegram-канале Squawk Box и в публичном чате Pine Script® Q&A на TradingView.

Мы надеемся, вы найдёте методы полезными. Продолжайте делиться с нами своими отзывами — именно они помогают нам делать TradingView лучше.

Look first Then leap

Мы создали TradingView, чтобы вы могли пользоваться самыми крутыми функциями.
Открыть график