Операторы сравнения сравнивают два операнда друг с другом и возвращают true или false в зависимости от результата. Например, оператор «меньше» (<) возвращает значение true, если значение слева от него меньше, чем значение справа. Итак, 2 < 10 возвращает true, а 10 > 19 оценивается как false.
В Pine Script есть несколько операторов сравнения:
< — знак меньше чем. 5 < 10 — возвращает значение true (верно), т.к. 5 и правда меньше 10.
Также можно сравнивать цены открытия: open < open [3]. Возвращает true, если открытие текущего бара меньше, чем цена открытия 3-х баров назад. Используется с числовыми выражениями.
<= — знак меньше или равно. open <= close. Возвращает true только тогда, когда цена открытия бара меньше или равна цене закрытия бара. Используется с числовыми выражениями.
!= — знак не равно. volume != volume[1] это выражение возвращает значение true для всех ценовых баров, объем которых отличается от предыдущего бара; false для всех остальных баров.
close != close [5] это выражение возвращает true только тогда, когда цена открытия текущего бара не равна цене открытия 5 баров назад. Используется с выражениями любого типа.
== — знак равно. Используется с выражениями любого типа. high == high[1] это выражение возвращает значение true только в том случае, если максимум текущего бара точно такой же, как максимум предыдущего бара.
volume == ema(volume, 5) возвращает true, если объем текущего бара идентичен объему последних 5 баров; возвращает false во всех остальных случаях.
> — знак больше чем. 10 > 5 возвращает значение true (верно), т.к. 10 и правда больше 5.
open > ema(close, 10) это выражение возвращает true, только если цена открытия текущего бара больше, чем экспоненциальная скользящая средняя (EMA) цены закрытия за последние 10 баров.
>= — знак больше чем. open >= low[2] это выражение возвращает true, только если цена открытия текущего бара больше или равна минимальной цене 5 баров назад.
Пример использования операторов сравнения TradingView
Будем рисовать крестики синего цвета:
1 2 3 4 |
//@version=5 indicator(title='Relational', overlay=true) plot (low <= low[3] ? low : high, style=plot.style_cross, color=color.blue, linewidth=3) |
Проверяем условие low <= low[3], если оно true (верное), то будем рисовать крестик синего цвета рядом с low, если оно false (не верное), то будем рисовать крестик над high.
Так выглядит наш индикатор на графике:
Приведем еще один пример, как использовать несколько сравнений подряд.
1 2 3 4 5 6 |
//@version=5 indicator(title='Relational', overlay=true) OpenMax = high > high[1] background = (OpenMax == true and OpenMax[1] == true and OpenMax[1] == true) ? color.new(color.fuchsia, transp = 50): na bgcolor(color=background) |
Переменной OpenMax присваиваем результат сравнения high > high[1]. При помощи тернарного оператора проверяем сразу 3 условия подряд, если все три условия верны, то в переменную background возвращаем цвет fuchsia с прозрачностью 50, если нет, то na.
Условия проверяют больше ли high данной свечи, чем high предыдущей свечи, далее такое сравнение делается для предыдущих двух свечей OpenMax[1] == true и для предыдущих двух OpenMax[2] == true.
Наш пример заканчивается функцией bgcolor(), которая окрашивает фон графика в цвет фуксия, если условия выполнены: high текущей свечи выше трех предыдущих.
Добавим скрипт на график:
Помимо операторов сравнения, в TradingView есть логические операторы and, or, not.
Разница между ними заключается в том, что операторы сравнения сравнивают значения друг с другом (например, если закрытие меньше, чем предыдущее закрытие). Логические операторы объединяют истинные/ложные выражения, например high>high[2] and open>open[2] или high>high[1] or close
Андрей 2023-08-02
Чтобы избегать пустые бары