В TradingView есть четыре арифметических оператора, которые выполняют стандартные математические операции сложения (+), вычитания (-), умножения (*) и деления (/).
Оператор — это элемент кода, который выполняет операцию над одним или несколькими значениями (операндами) для создания результата.
Простые арифметические операторы в TradingView работают так, как обычные математические:
Как видно из приведенной выше таблицы, всем арифметическим операторам требуется два операнда.
Но операторы сложения (+) и вычитания (-) также могут применяться к одному операнду. В этом случае (-) возвращает значение, противоположное операнду, а (+) оставляет значение без изменений.
Предположим, что х=10, а у=-5, как же изменятся их значение, если перед ними поставим операнды (-) и (+):
Значения, возвращаемые арифметическими операторами TradingView
Значение, возвращаемое арифметическими операторами, зависит от типа операндов. Есть две ситуации, в которых эти операторы возвращают значения, отличные от ожидаемых.
- При делении двух целых чисел с помощью ( / ) дробное значение отбрасывается, а результат округляется до целого значения. Однако это происходит только при целочисленном делении: если при делении, один из операндов является дробным значением float, результатом будет дробный ответ.
Например, деление 25 на 7 дает 3, а деление 25 на 7,0 (или 25,0 на 7) дает 3,6. - Когда одним операндом является NaN («не число», значение, вызванное недопустимыми операциями), арифметические операторы также возвращают NaN.
Использование операторов сложения в Pine Script
1 2 3 4 5 6 7 8 |
//@version=5 indicator(title="Arithmetic operators - example 1") upV = 1.0 //устанавливаем значение для самоссылающейся переменной upV := close > open ? nz(upV[1]) + volume : nz(upV[1]) downV = 1.0 downV := close < open ? nz(upV[1]) + volume : nz(downV[1]) plot(series=upV, color=color.green) // рисуем график переменной pV зелёным цветов plot(series=downV, color=color.red) // рисуем график переменно downV красным цветов |
Рассчитываем значения upV и downV при помощи тернарных операторов.
- Проверяем первое условие close > open, если оно верное, то мы прибавляем объем текущего бара (volume) к значению переменной на предыдущем баре (upV[1]).
- Если же условие не верное, то повторяем значение предыдущего бара. Результат присваиваем переменной upV.
- На следующей строке проверяем условие: close < open.
- Если условие верное, то мы прибавляем объем текущего бара (volume) к значению переменной на предыдущем баре (downV[1]).
- Если же условие не верное, то повторяем значение предыдущего бара. Результат присваиваем переменной downV.
Поскольку обе операции (upV[1]) и (upV[1]) возвращают значение NaN на первом баре (исторического бара перед первым не существует), мы используем функцию nz (). Эта функция любое значение NaN изменяет на 0, что позволяет нам правильно рассчитывать все предыдущие значения бара. Если не использовать nz (), то график не выводится.
В предыдущей части мы рассказывали когда и зачем стоит применять оператор (:= ).
Заключение
- В TradingView есть четыре арифметических оператора: сложение (+), вычитание (-), умножение (*) и деление (/).
- Каждый из них может работать с двумя операндами, в то время как сложение и вычитание также могут применяться только к одному операнду.
- Значение, возвращаемое арифметическими операторами, зависит от типа операндов: если один операнд равен NaN, то и результат будет NaN. А при делении двух целых чисел отбрасываются все значения после запятой, чего не происходит, когда хотя бы один операнд является дробным (float).