Оператор If в Thinkscript

Я начинающий программист thinkscript и довольно быстро изучаю синтаксис thinkscript. Однако у меня возникают проблемы с операторами if. Я понимаю, что вы можете иметь один оператор внутри блока if, но возможно ли иметь несколько операторов в блоке if?

Не: если (условие), то (это) иначе (то);

но: если (условие), то { (это); (что);};


person Programmer MJM    schedule 06.05.2015    source источник
comment
В отличие от форумов, мы не используем слова «Спасибо» или «Любая помощь приветствуется» или подписи на Stack Overflow. См. раздел Должен ли быть "Привет", "спасибо" слоганов и приветствий удалить из постов?. Кстати, это заранее спасибо, а не спасибо заранее.   -  person John Saunders    schedule 11.05.2015
comment
Спасибо за редактирование, Джон Сондерс.   -  person Programmer MJM    schedule 11.05.2015


Ответы (2)


Это возможно. Просто перепутайте переменные графика с условными операторами, поскольку они, в свою очередь, используют условные операторы для рисования графики.

person Community    schedule 11.05.2015
comment
Извините... Я этого не понимаю. - person ScottyBlades; 04.10.2019
comment
Это также на самом деле не отвечает на вопрос: возможно ли иметь несколько операторов в блоке if? Если это возможно, то как? - person leanne; 01.04.2021

По существу, в thinkScript есть три формы использования if. Все три формы также требуют ветки else. Одна форма позволяет устанавливать или отображать одно или несколько значений. Два других позволяют установить или вывести на график только одно значение.

  1. Оператор if: может установить одно или несколько значений для plot или def переменных в квадратных скобках.
def val1;
plot val2;
if (cond) {
  val1 = <value>;
  val2 = <value>;
} else {
  # commonly used options:

  # sets the variable to be Not a Number
  val1 = Double.NaN;

  # sets the variable to what it was in the previous bar
  # commonly used for recursive counting or retaining a past value across bars
  val2 = val2[1];
}
  1. if выражение: универсальное выражение для установки значения. Можно установить только одно значение на основе условия, но его можно использовать в других операторах. Эта версия обычно используется для рекурсивного подсчета элементов на полосах и для отображения разных цветов, например, в зависимости от условия.
def val1 = if <condition> then <value if true> else <value if false>;
  1. if функция: аналогична приведенной выше, но более компактна, это версия троичного условного оператора в thinkScript(r). Разница в том, что значения true и false должны быть двойными значениями. Следовательно, его нельзя использовать, скажем, для установки цветов или других элементов, которые не представляют двойные значения.
def var1 = if(<condition>, <value if true>, <value if false>);

Следующий пример изменен из документа thinkScript API для функции if демонстрирует использование всех трех версий. Я добавил вторую переменную, чтобы продемонстрировать, как оператор if может одновременно устанавливать несколько значений на основе одного и того же условия:

# using version 3, "if function"
plot Maximum1 = if(close > open, close, open);

# using version 2, "if expression"
plot Maximum2 = if close > open then close else open;

# using version 1, "if statement", with two variables, a `plot` and a `def`
plot Maximum3;
def MinimumThing;
if close > open {
    Maximum3 = close;
    MimimumThing = open;
} else {
    Maximum3 = open;
    MinimumThing = close;
}

В качестве примечания, хотя в примере это не показано, можно использовать ключевое слово def, а также ключевое слово plot для определения значений переменных с этими операторами.

person leanne    schedule 01.04.2021