Зачастую наши стратегии предполагают выполнение одно из двух действий в зависимости от ситуации. Например, «если бар закрылся выше ЕМА50, то нужно продать текущие позиции; в противном случае покупаем позицию еще на 10% от депозита». Для реализации этого мы используем оператор if/else.

Оператор if/else дает нам возможность выбрать один из двух вариантов. Таким образом, индикатор или стратегия принимает решения на основе доступных данных. Благодаря этой функции наш код может разветвляться и обрабатывать разные ситуации.

При помощи оператора if/else можно отправлять команды для входа/выхода из рыночной позиции, рисовать линии тренда, размещать текстовые метки, рассчитывать значения и пр.

Оператор if/else состоит из нескольких частей:

  • Сначала мы пишем ключевое слово if, за которым следует условие, оцениваемое как true/false.
    Ниже следует 1 или несколько строк кода. Перед кодом необходимо сделать отступ в 4 пробела или 1 Tab. Этот код выполняется всякий раз, когда условие истинно.
  • Далее пишем ключевое слово else.
    Под else есть еще один блок кода (опять же с отступом в 4 пробела или 1 Tab). Строка или строки кода, которые мы здесь запускаем, когда условие под if не соответствует действительности.
  • При желании мы можем сохранить значение, возвращаемое оператором if/else, в переменную.
  • Таким образом, с оператором if/else всегда выполняется один из двух путей. Когда условие истинно, наш код под if запускается. Если условие ложно, выполняется код else.

Давайте рассмотрим несколько примеров.


В данном случае мы оцениваем условие: «цена close закрылась выше, чем значение EMA20?» Если условие истинно мы открываем позицию в лонг, в противном случае выполняется код после else, мы открываем шорт.

Как сохранить результат работы оператора if/else в переменную:


Проверяем условие после if : «цена close закрылась выше, чем значение EMA20?» Если условие истинно, то переменной  Colour присваиваем цвет lime, в противном случае выполняется код после else — переменной переменной  Colour присваиваем цвет color.fuchsia.

При помощи функции plot выводим график цен закрытия цветом Colour (color=Colour).

Еще один пример:


Pinescript. Как работает оператор if / else (часть 2)

Вот так можно использовать оператор if/else, для «разветвления» нашего кода и принимать разные решения, в зависимости от условий на рынке.