Часто требуется построить какой-то график, реализующий какое-то математическое действие с другими графиками, уже построенными в терминале. В самом простом варианте это может быть разница между двумя графиками — спред. Или среднее значение между двумя графиками. Или процентное соотношение между ними. Или все что угодно иное.
Несколько раз мне заказывали создание таких индикаторов, каждый раз с новой формулой. Каждый раз приходилось либо писать новый индикатор для терминала либо создавать формулу для программы технического анализа. Я решил, что имеет смысл написать для этой цели универсальный инструмент. Знакомьтесь: Juggler.
Итак, имеем в качестве входящей информации:
Например, формула для расчета спреда (первый график минус второй график) выглядит так: A — B. Если нам нужно разделить значения одного графика на соответствующие значения второго графика, то формула будет выглядеть так: A / B.
Можно задавать и более сложные функции, используя арифметические и логические и математические функции. Например, процентная разница между двумя графиками будет выглядеть так: (A-B)/A * 100
Выражения можно задавать сколь угодно большой сложности.
Для примера построим процентный спред между двумя скользящими средними (JMA и EMA), построенных на Газпроме.
Добавляем на график индикатор Juggler. Задаём параметры индикатора:
Задаем выражение, которое необходимо расчитать, указываем идентификаторы графиков А и B. ident1 — это идентификатор, который мы дали графика JMA в его настройках, ident2 — идентификатор графика EMA. Если «входящие» индикаторы имеют несколько линий, указываем номер линии, которую следует принимать в расчет. Можно также выбрать поле для расчета, если в качестве «входящего» графика используется график котировок инструмента.
Нажимаем кнопку OK и получаем следующий результат:
Кроме обычных математических действий можно использовать логические (not, or, and, <, <=, >,>=, ==, ~=) а также встроенные функции:
Математические функции, возвращающие одно значение (регистр символов важен)
ABS (x) Модуль x.
ACOS (x) Арккосинус x (в радианах).
ASIN (x) Арксинус x (в радианах).
ATAN (x) Арктангенс x (в радианах).
CEIL (x) Наименьшее целое число, большее или равное x. (Округление «вверх»).
COS (x) Косинус x (Угол – в радианах).
COSH (x) Кошинус (гиперболический косинус) x.
DEG (x) Переводит угол, заданный в радианах (x) в градусы.
EXP (x) e в стенени x.
FLOOR (x) Наибольшее целое число, меньшее или равное x. (Округление «вниз»)
LN (x) Натуральный логарифм x.
LOG10 (x) Логарифм x по основанию 10.
RAD (x) Конвертирует угол x, заданный в градусах, в радианы.
ROUND (x) Округление до ближайшего целого
SIGN (x) Модуль числа. -1 для отрицательных, 0 или 1 для положительных
SIN (x) Синус x (аргумент – в радианах).
SINH (x) Шинус (гиперболический синус) x.
SQRT (x) Квадратный корень x. (Вы также можете использовать выражение x^0.5 для вычисления этого значения.)
TAN (x) Тангенс угла x (аргумент – в радианах)
TANH (x) Гиперболический тангенс x.
Математические функции, возвращающие одно значение для нескольких аргументов (регистр символов важен)
IIF (x1,x2,x3) Если x1 истинно, возвращает x2. Иначе возвращает x3
MIN (x1,x2,x3....) Минимальное значение нескольких значений
MAX (x1,x2,x3....) Максимальное значение нескольких значений
Для правильной работы индикатора Juggler «входящие» индикаторы необходимо располагать на одном графике (можно в разных областях).
Ссылка для скачивания.