По техническому заданию клиента был разработан индикатор по 3 инструментам по произвольной формуле для QUIK на Lua. Данный индикатор позволяет задавать формулу расчета прямо в настройках, где параметрами выступают значения баров 3 заданных инструментов. Если по части баров у 2-го или 3-го инструмента нет значений, то берется последнее значение инструмента по предыдущим барам (чтобы не было сильных скачков результирующих значений). По получившемуся графику дополнительно строится скользящая средняя SMA с заданным периодом.
В представленном примере индикатор считает простейшую формулу A1-(A2+A3)/2 по Close всех инструментов.
Параметры индикатора:
- VTA1 — Значение бара инструмента 1. Возможные значения — Open, High, Low, Close, Median, Typical, Weighted, Difference, Volume
- VTA2 — Значение бара инструмента 2. Возможные значения — Open, High, Low, Close, Median, Typical, Weighted, Difference, Volume
- VTA3 — Значение бара инструмента 2. Возможные значения — Open, High, Low, Close, Median, Typical, Weighted, Difference, Volume
- A2 — Идентификатор на инструмент 2
- A3 — Идентификатор на инструмент 3
- Formula — Формула расчета (по умолчанию A1+A2+A3)
- Period — Период для SMA по результирующему графику
Формула может быть любой сложности (например (A1-A2)*100/A3)и в ней могут участвовать следующие математические функции:
math.abs (x)
Возвращает модуль x.
math.acos (x)
Возвращает арккосинус x (в радианах).
math.asin (x)
Возвращает арксинус x (в радианах).
math.atan (x)
Возвращает арктангенс x (в радианах).
math.atan2 (x, y)
Возвращает арктангенс x/y (в радианах), но использует знаки обоих параметров для вычисления «четверти» на плоскости. (Также корректно обрабатывает случай когда y равен нулю.)
math.ceil (x)
Возвращает наименьшее целое число, большее или равное x. (Округление «вверх»).
math.cos (x)
Возвращает косинус x (Угол – в радианах).
math.cosh (x)
Возвращает косинус (гиперболический косинус) x.
math.deg (x)
Переводит угол, заданный в радианах (x)в градусы.
math.exp (x)
Возвращает ex.
math.floor (x)
Возвращает наибольшее целое число, меньшее или равное x. (Округление «вниз»)
math.fmod (x, y)
Возвращает остаток от деления x на y.
math.frexp (x)
Возвращает m и e такие, что x = m2e, e – целое, а модуль m находится в интервале [0.5, 1) (либо ноль, если x равен нулю). (Разложение числа с фиксированной запятой).
math.huge
Значение HUGE_VAL, значение большее, либо равное любому числовому значению.
math.ldexp (m, e)
Возвращает m2e (e должно быть целым). (Восстановление значения по мантиссе и показателю).
math.log (x)
Возвращает натуральный логарифм x.
math.log10 (x)
Возвращает логарифм x по основанию 10.
math.max (x,···)
Возвращает максимальный из аргументов.
math.min (x, ···)
Возвращает минимальный из аргументов.
math.pi
Значение pi.
math.pow (x, y)
Возвращает x в степени y. (Вы также можете использовать запись x^y для вычисления значения этой функции.)
math.rad (x)
Конвертирует угол x, заданный в градусах, в радианы.
math.sin (x)
Возвращает синус x (аргумент – в радианах).
math.sinh (x)
Возвращает синус (гиперболический синус) x.
math.sqrt (x)
Возвращает квадратный корень x. (Вы также можете использовать выражение x^0.5 для вычисления этого значения.)
math.tan (x)
Возвращает тангенс угла x (аргумент – в радианах)
math.tanh (x)
Возвращает гиперболический тангенс x.