Оператор (+) можно использовать не только для сложения, но и для объединения строк текста. Давайте разберемся, как это сделать.
Для начала рассмотрим несколько терминов. В программирование есть понятие string — строковая переменная или строка текста.
В Pine Script есть 2 типа строк:
- string literal — это текст, введенный вручную в исходный код скрипта и заключенный в одинарные или двойные кавычки. Примерами строковых литералов являются «привет, как дела?» и ‘объем продаж’.
- string variable — строковая переменная, которая содержи текст. Это может быть встроенная переменная (например, тикер, который возвращает строку с символом инструмента) или переменная, которую мы инициализировали сами. Примером последнего является myText = «длинный сигнал».
Как работает оператор сложения (+) с текстом:
- при помощи (+) можно объединить две строки, если они являются текстом (переменными типа string), например: «привет» + «друзья» , получим «привет друзья». Нельзя объединить 2 переменные разного типа (int + string), например: 10 + «октября», мы получим ошибку «Cannot call ‘operator +’ with argument ‘expr1’=’октября’. An argument of ‘literal string’ type was used but a ‘const int’ is expected«.
- чтобы преобразовать число в текст, используйте функцию str.tostring(). Подробнее о str.tostring() читайте в нашей статье. Т.е. правильно написать: str.tostring (10) + «октября».
НО! str.tostring() нельзя использовать для отображения текста в функциях plotshape() и plotchar().
Пример, как объединить строки при помощи оператора сложения (+)
1 2 3 4 5 6 7 8 9 |
//@version=5 indicator(title='strings', overlay=true) newHigh = high == ta.highest(high, 20) newLow = low == ta.lowest(low, 20) plotshape(series=newHigh, location=location.abovebar, style=shape.flag, color=color.lime, text="new" + '\n' + "20-bar" + '\n' + "high", textcolor=color.lime) plotshape(series=newLow, location=location.belowbar, style=shape.flag, color=color.purple, text='New ' + '\n' + '20-bar low', textcolor=color.purple) |
Функция ta.highest (high, 20) возвращает максимальное значение (high) за 20 баров назад. Далее мы проверяем равен ли high текущего бара значению, которая возвращает функция ta.highest. Если да, то переменной newHigh присваиваем true.
Другой переменной, newLow точно также присваиваем значение true/false, но проверяя является ли текущий low самым низким за последние 20 баров.
При помощи функции plotshape выводим серию значений newHigh или newLow, в зависимости от того, какой аргумент в данным момент получил значение true:
- location — аргумент определяет местоположение фигур на графике abovebar (над баром) и belowbar (под баром)
- style — определяет тип фигур, в данном случае флаг
- color — определяет цвет фигур (у newHigh флаги зеленые, у newLow — фиолетовые).
- text — текст, который будет отображаться рядом с фигурой. Он может быть заключен в одинарные или двойные кавычки. В данном случае при помощи (+) мы объединили три фразы: «new» , «20-bar» и «high. ‘\n’ — означает переход на новую строку, аналогично enter на клавиатуре.
- ‘New ‘ + ‘\n’ + ’20-bar low‘ — объединили две фразы: ‘New ‘и ’20-bar low’.
- textcolor — определяет цвет выводимого текста.
Вот так выглядят фигуры с текстом на графике, флаг появляется каждый раз, когда формируется новый максимум или минимум:
- Строка текста- это строковой переменной или строковый литерал типа string, она должна быть заключена в одинарные или двойные кавычки.
- Оператор сложения может использоваться для объединения строковых литералов и переменных типа string.
- Если вы хотите объединить вместе переменные разного типа, то для начала их надо преобразовать в текст при помощи функции tostring().
- Переход на новую строку осуществляется при помощи escape-символа новой строки («\n»).