Синтаксис блоков Формула, Логическая формула и Строковая формула
Last updated
Last updated
Формула - данные блоки предназначены для выполнения арифметических действий над входными данными.
Блоки Формула можно найти на панели Панели инструментов Редактора в группе Служебные элементы
Чтобы открыть Редактор формул блоков Формула дважды кликните левой кнопкой мыши по блоку. В оконном режиме редактора формул поддерживается технология IntelliSense. При наборе имени блока в нижнем левом углу окна появляется список блоков, название которых подходят под набираемый текст.
Переход в список-подсказку возможен либо клавишей Down (стрелка вниз), либо кликом левой кнопки мыши на наименовании. Навигация по списку осуществляется либо клавишами Up и Down (стрелки на клавиатуре), либо мышью. Выбор интересующего блока из списка осуществляется либо клавишей Enter, либо двойным кликом мыши. После выбора блока из списка, выражение дополняется выбранным блоком, и с выбранным блоком устанавливается связь, если она ещё не установлена.
В редакторах формул можно использовать клавиши клавиатуры SHIFT+ENTER для перехода на следующую строку.
Вы можете добавлять комментарии в блоках формула. Для этого необходимо использовать следующую запись:
Обратите внимание!
Комментировать можно либо число, либо название блока, размещенного в рабочей области Редактора;
Используя символы комментария вы можете закомментировать часть формулы, записанной в Редакторе формул и выбранныя часть формулы не будет использована в расчетах при компиляции скрипта. Это может быть полезным, если вы хотите проверить внесенные в формулу изменения без удаления частей формулы.
Комментировать можно текстом. Например, /*"Привет мир!"*/
Блок Логическая формула используется для проверки истинности выражения. На выходе логической формулы всегда 0 (т.е. «ложь» или англ. вариант – «false») или 1 (соответственно «истина» или англ. вариант – «true»). На практике обычно применяется для записи условия входа/выхода из позиции. Рассмотрим синтаксис, который возможно использовать в блоке «Логическая формула». В блоке «Логическая формула» могут быть использованы следующие операции сравнения (для каждой операции приведен пример):
Больше
>
Close>Open
Меньше
<
Open[i]<Open[i-1]
Больше или равно
>=
Close>=Open
Меньше или равно
<=
Close<=EMA
Равно
==
Close==High
Равно истина
==true
Логическая формула==true (Короткая запись: Логическая формула)
Равно ложь
==false
Логическая формула1==false (Короткая запись: !Логическая формула1)
Не равно
!=
Close!=High
Не равно истина
!=true
Логическая формула!=true (Короткая запись: !Логическая формула)
Не равно ложь
!=false
Логическая формула1!=false (Короткая запись: Логическая формула1)
Помимо операций сравнения в блоке «Логическая формула» можно производить одновременную проверку ряда условий. Эти условия должны быть объединены следующими операторами:
Логическое "И"
&&
Close>Open && Open[i]<Open[i-1]
Логическое "ИЛИ"
||
EMA==EMA1 || Close<=EMA
При использовании «И», на выходе блока «Логическая формула» будет истина лишь в том случае, если все условия, записанные в блоке – истинны.
При использовании «ИЛИ», на выходе блока будет истина, если хотя бы одно из условий, записанное в блоке – истинно.
Примечание. В блоке «Логическая формула» возможно использование математических функций: Сложение, Вычитание, Умножение, Деление.
Блок Формула используется для вычисления значений выражений. На выходе всегда числовое значение. На практике обычно применяется для промежуточных расчетов, а также для вычисления уровней входа/выхода из позиции. В блоке «Формула» допустимо использование следующих операций:
Сложение
+
Open+Close
Вычитание
-
EMA-EMA1
Умножение
*
Close*Константа
Деление
/
Close/Close[i-1]
Особенностью блока «Формула» является возможность использования логического условия If (Если). Результатом выполнения будет все равно являться число. Запись логического условия If в блоке «Формула» выглядит следующим образом:
В результате проверки Логического условия, если оно истинно – на выходе блока «Формула» будет «Выражение,_если_истина», в противном случае – «Выражение,_если_ложь». Пример использования:
1️⃣ Возможность работы с предыдущими значениями некой последовательности (цены, индикатора и прочее). В блоках возможно обращение к предыдущим значениям цен или индикаторов. Текущее значение всегда обозначается индексом i. Для того, чтобы обратиться, например, к предыдущему значению Цены закрытия, следует записать
В случае использования в расчетах и проверках обращения к предыдущим элементам, следует не забывать про параметр «Начинать с». Самым простым способом запомнить, что ставить в поле «Начинать с», посмотреть максимальное число, используемое в квадратных скобках и вычитаемое из индекса i. Пример. В логической формуле записано выражение:
Посмотрев на эту запись, видим что максимальное значение числа в квадратных скобках равно 9. Поэтому в поле «Начинать с» мы ставим 9. Почему при обращении к предыдущим элементам надо менять значение в поле «Начинать с»? Все просто. Последовательность значений имеет начало или границу. За пределами начала ничего нет, там пусто. Все расчеты строятся относительно текущего значения i, поэтому, когда начинаем считать значение для i=0, т.е. для первого значения последовательности, и пытаемся сослаться, допустим, на предыдущее значение, программа скажет, что там пусто и вычислить она не сможет. Однако, когда запись простая, например [i-9], «Начинать с» ставить не обязательно, программа определит автоматически. Когда используется запись EMA[i-Константа] или EMA[i-Формула], "Начинать С" ставить обязательно. Этот параметр должен быть заведомо больше, чем значение константы или формулы, но не более, чем загруженных баров в скрипт(или Агент). Это число поставьте в свойствах скрипта в настройке "Торговать с бар". Параметр «Начинать с» показывает, с какого бара начинать расчет.
Аксиома: • Запись Close[i] равноценна записи Close
В блоке Формула можно обратиться к своему собственному значению
Вернет значение Close плюс предыдущее значение самой формулы.
2️⃣ Возможность использования функций библиотеки Math. В выражениях, записываемых в блоках «Формула» и «Логическая формула» возможно использование функций из библиотеки Math. Список функций и описание приведено на сайте:
Необходимость в этих функциях появляется, когда не хватает стандартных математических действий, о которых шла речь выше. Использование функций из библиотеки Math позволяет, например:
Вычислить абсолютное значение
Возвести число в степень
Вычислить синус, косинус и т.д.
Округлить число
Вычислить квадратный корень из числа
И т.д.
Как использовать эти функции в блоках? Для вычисления значения с помощью функции необходимо записать:
Пример. Необходимо вычислить абсолютное значение для выражения (EMA-EMA1).
Использование других функций – аналогично, различие возможно в количестве параметров функции, которые указываются в скобках.
Есть ли в TSLab функция округления в большую/меньшую сторону?
В блоках Формула в меню добавлен выбор Math метода
Наведите курсор на кнопку Math. Переход в список-подсказку осуществляется кликом левой кнопки мыши на наименовании Math.
Навигация по списку Math методов осуществляется либо клавишами Up и Down, либо мышью. Выбор интересующего метода из списка осуществляется либо клавишей Enter, либо кликом левой кнопки мыши.
Например, если в формуле записать
ожидается, что при выводе формулы на график получим 4,33, но формула будет показывать число 4 Целое число поделить на целое число, получим целое число. Лайфхак: числителю или к знаменателю дописать .0 Т.е. записать 13/3.0 , а не 13/3 Значение первого бара загруженной истории
Формула вернет значение Закрытия бара первой свечи загруженной истории.
"Строковая формула" - любые условия в рамках синтаксиса языка C# для выбора выводимого сообщения. Выход формулы на контрольную панель.
Максимально близко к логической формуле, только выход не булевский, а строковый. Пример:
Вывести формулу в контрольную панель. Таким образом, когда бар растущий, в контрольной панели будет надпись Растет.
Проверка формулы на NaN В блоке формула можно написать
Например, в блоке Формула2 проверить предыдущую формулу и присвоить значение
В случае, если Формула1 имеет неизвестное значение NaN, то Формула2 вернет 0.
В блоке логическая формула можно написать:
Что будет давать 50% вероятности появления сигнала в истории, при обновлении графика(при компиляции скрипта, если не стоит флаг "Обновлять в режиме реалтайм").
Sample_logical_formula.xml Sample_formula.xml Sample_logical_formula_&_formula_basic.xml