В Pine Script существует 5 типов данных: целое число (int), дробное число (float), строка (str), логический тип данных (bool) и цвет. Разные функции работают только с определенным типом данных, так что иногда нам приходится преобразовывать данные одного типа в данные другого типа — такой процесс называется преобразование типов (или приведение типов).

Поговорим о том, как преобразовать числа (int) в строковый тип данных (или в текст) (str).

Преобразуем числовые данные в текстовые с помощью функции str.tostring

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

Для этого мы используем функцию str.tostring, она преобразует числовое значение в текстовую строку в TradingView.

В 5-й версии PineScript существует 4 типа функций str.tostring:

  • str.tostring (value) → series string (возвращает серию строковых данных)
  • str.tostring (value, format) → series string (возвращает серию строковых данных в указанном формате)
  • str.tostring (value) → simple string (возвращает строку, текст)
  • str.tostring (value, format) → simple string (возвращает строку, текст в указанном формате)

У функции str.tostring  есть 2 аргумента:

  • value — обязательный аргумент (серия данных или 1 значение), которое функция должна преобразовать в текст. Когда value принимает значение na, функция возвращает строку «NaN».
  • format — необязательный аргумент, указывающий, как число должно быть преобразовано в текст. Этот аргумент имеет значение по умолчанию #.##########, которое форматирует число в строку с 10 ненулевыми значениями. (Каждый знак # представляет одно число.) Если мы используем #.## в качестве строки формата, то tostring преобразует значение 1,42345 в строку (текст) «1,42». Чтобы отображать конечные нули, используйте ‘0’ вместо символа ‘#’. Например, ‘#.000’.

Приведем пример, как преобразовать числа в текст с помощью str.tostring

Нужно вывести значение bar_index на каждом баре

bar_index — индекс текущего бара, численный тип (int) данных. Чтобы вывести значение bar_index на каждом баре будем использовать функцию label.new. Нам нужно преобразовать числовое значение bar_index в строковое при помощи str.tostring.


Результат на графике:

Приведем пример, как преобразовать числа в текст с помощью str.tostring

В 5-й версии PineScript  у некоторых функций текстовые аргументы принимают серию данных только const str — постоянный текст, а некоторые series str (серию данных), что позволяет нам передавать серию изменяющихся данных.

Так у функции label.new аргумент text принимает тип series string, поэтому мы можем использовать не только статический текст, но и добавить к нему изменяющийся текст, например:


«покупай» — статический текст

«str.tostring(open)» — функция преобразует динамическое значение — цену открытия open в строковый тип

open  — меняется на каждом баре, поэтому называется динамическим (изменяющимся)

Приведем пример, как преобразовать числа в текст с помощью str.tostring

У функции strategy.entry первый аргумент id тоже может принимать серию изменяющихся данных (series string).

Рассмотрим следующую стратегию:

  • На каждой свечке проверяем объем продаж, если он больше 30 000 и свечка зеленая, то мы входим в лонг.
  • При этом на графике выводим id позиции «long at + цена закрытия (str.tostring(close))».
  • Если объем продаж меньше 10 000, то все продаем.


Результат на графике:

Приведем пример, как преобразовать числа в текст с помощью str.tostring

В функциях  plotshape и plotchar аргумент text может принимать только значения const string, так что обе строчки кода будут выдавать одну и ту же ошибку:



Как преобразовать числа в текст в TradingView с помощью str.tostring (приведение типов)

Код не может быть обработан, потому что str.tostring(close) — возвращает series string, серию изменяющихся данных, а text может принимать только const string — постоянный текст.

Подведем итог

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

У некоторых функций текстовые аргументы могут принимать только постоянные значения, а у некоторых еще и изменяющиеся. Во втором случае мы можем передавать постоянный текст, плюс серию преобразованных строковых данных из функции str.tostring.