Перейти к основному содержимому

Формулы

Формулы позволяют создавать пользовательские расчётные ряды на основе метрик графика. Комбинируйте, преобразуйте и анализируйте метрики с помощью арифметических операторов и встроенных функций.

Добавление формулы

  1. Откройте график в режиме редактирования
  2. Нажмите кнопку + Добавить, затем выберите Добавить формулу
  3. Введите название (например, «7-дневная SMA цены»)
  4. Введите выражение (например, sma(m1, 7))
  5. Нажмите Добавить формулу

Результат формулы появится на графике как новый ряд со своим цветом и оформлением.

Синтаксис

Ссылки на метрики и формулы

  • m1, m2, ... ссылаются на метрики графика по позиции (первая метрика = m1)
  • f1, f2, ... ссылаются на ранее заданные формулы по позиции (первая формула = f1)

Формулы вычисляются по порядку, поэтому f2 может ссылаться на f1, но не наоборот.

Арифметические операторы

Стандартные операторы с обычным приоритетом (* и / перед + и -):

m1 + m2 # Addition
m1 - m2 # Subtraction
m1 * m2 # Multiplication
m1 / m2 # Division (returns null if divisor is 0)
(m1 + m2) * m3 # Parentheses for grouping

Числа и горизонтальные линии

В выражениях можно использовать константные значения. Отдельно стоящее число рисует горизонтальную линию на этом уровне:

42000 # Horizontal line at 42,000
m1 * 100 # Scale a metric
m1 / 1000000 # Convert to millions
0.5 # Horizontal line at 0.5 (useful as threshold)

Функции

Скользящие средние и скользящая статистика

ФункцияСинтаксисОписание
smasma(series, period)Простое скользящее среднее — среднее арифметическое по последним N точкам данных
emaema(series, period)Экспоненциальное скользящее среднее — EMA_t = value_t × k + EMA_(t-1) × (1 - k), где k = 2 / (period + 1). Придаёт больший вес недавним значениям
medianmedian(series, period)Скользящая медиана (срединное значение) за N периодов
sumsum(series, period)Скользящая сумма по последним N периодам
stdstd(series, period)Скользящее стандартное отклонение за N периодов

Кумулятивные функции

Функции с расширяющимся окном, использующие все данные от начала и до каждой точки:

ФункцияСинтаксисОписание
cumsumcumsum(series)Расширяющаяся накопленная сумма от начала данных
cummeancummean(series)Расширяющееся накопленное среднее от начала данных
cummediancummedian(series)Расширяющаяся накопленная медиана от начала данных
cumstdcumstd(series)Расширяющееся накопленное стандартное отклонение от начала данных
cummaxcummax(series)Кумулятивный исторический максимум до каждой точки
cummincummin(series)Кумулятивный исторический минимум до каждой точки

Функции изменения

ФункцияСинтаксисОписание
percent_changepercent_change(series, period)Процентное изменение за N периодов. Значения возвращаются в виде десятичных дробей (например, 0.20 = рост на +20%)
diffdiff(series, period)Абсолютное изменение за N периодов: value_t - value_(t-N)

Математические функции

ФункцияСинтаксисОписание
absabs(series)Абсолютное значение всех точек данных
powpow(series, n)Возведение всех точек данных в степень n
loglog(series)Десятичный логарифм (возвращает null для неположительных значений)
roundround(series, digits)Округление значений до N знаков после запятой
maxmax(a, b, ...)Поточечный максимум — возвращает наибольшее значение среди всех аргументов в каждой точке данных. Аргументы могут быть рядами или константами, например max(m1, m2, 0)
minmin(a, b, ...)Поточечный минимум — возвращает наименьшее значение среди всех аргументов в каждой точке данных. Аргументы могут быть рядами или константами, например min(m1, m2, 100)

Технические индикаторы

ФункцияСинтаксисОписание
rsirsi(series, period)Индекс относительной силы (0–100) с использованием метода сглаживания Уайлдера за N периодов
corrcorr(series1, series2, period)Коэффициент корреляции Пирсона между двумя рядами по скользящему окну в N периодов. Возвращает значения от -1 (обратная корреляция) до +1 (полная корреляция)
drawdowndrawdown(series)Относительная просадка от исторического максимума. Возвращает отрицательные десятичные дроби (например, -0.30 = на 30% ниже ATH)

Риск и доходность

ФункцияСинтаксисОписание
mean_returnmean_return(series, period)Годовая скользящая средняя доходность за N периодов (на основе дневной логарифмической доходности × 365)
realized_volrealized_vol(series, period)Годовая реализованная волатильность за N периодов (стандартное отклонение дневной логарифмической доходности × √365)
sharpe_ratio_arithmeticsharpe_ratio_arithmetic(series, period)Годовой коэффициент Шарпа на основе среднего арифметического доходностей за N периодов
sharpe_ratio_geometricsharpe_ratio_geometric(series, period)Годовой коэффициент Шарпа на основе среднего геометрического доходностей за N периодов

Преобразование рядов

ФункцияСинтаксисОписание
shiftshift(series, period)Сдвиг ряда вправо на N периодов. Положительный период показывает прошлые значения в текущей позиции (т.е. каждая точка данных отображает значение на N периодов раньше). Отрицательный период сдвигает влево (показывает будущие значения)
ifif(a, "op", b, then, else)Условие: вычисляет сравнение a op b в каждой точке данных, возвращает then, если истина, и else, если ложь. Аргумент op — это оператор сравнения, передаваемый в виде строки в кавычках: "=", "!=", ">", ">=", "<", "<="

Примеры

Скользящие средние

sma(m1, 7) # 7-day simple moving average of first metric
sma(m1, 30) # 30-day SMA
ema(m1, 21) # 21-day exponential moving average
median(m1, 14) # 14-day rolling median

Определение пересечения SMA

f1: sma(m1, 7) # Short-term SMA
f2: sma(m1, 30) # Long-term SMA
f3: f1 - f2 # Difference (positive = short above long)

Анализ соотношений

m1 / m2 # Ratio between two metrics

Просадка от исторического максимума

drawdown(m1) # Drawdown as negative decimal (-0.30 = 30% below ATH)

Полосы Боллинджера

f1: sma(m1, 20) # Middle band
f2: f1 + 2 * std(m1, 20) # Upper band (+2 standard deviations)
f3: f1 - 2 * std(m1, 20) # Lower band (-2 standard deviations)

Изменение от периода к периоду

percent_change(m1, 7) # 7-day percentage change (decimal)
diff(m1, 30) # 30-day absolute change

RSI

rsi(m1, 14) # 14-period RSI
30 # Oversold threshold line
70 # Overbought threshold line

Ограничение значений

max(m1, 0) # Floor at zero (remove negative values)
min(m1, 100) # Cap at 100
max(m1, m2) # Higher of two metrics at each point

Корреляция

corr(m1, m2, 30) # 30-day rolling correlation between two metrics

Волатильность и риск

realized_vol(m1, 30) # 30-day annualized volatility
sharpe_ratio_arithmetic(m1, 90) # 90-day annualized Sharpe ratio

Оформление

После добавления формулы нажмите на неё в легенде (в режиме редактирования), чтобы настроить:

  • Стиль графика: линия, область или столбцы
  • Цвет: выбор из предустановок или произвольный
  • Ось Y: назначение на любую ось
  • Толщина линии и прозрачность заливки
  • Видимость: переключатель показа/скрытия

Сохранение

Формулы сохраняются вместе с конфигурацией графика. При сохранении графика в «Мои графики» все формулы сохраняются и восстанавливаются при повторной загрузке графика.

Экспорт

Значения формул включаются в экспорт в форматах CSV и JSON. Заголовком столбца каждой формулы служит её название.