Формулы
Формулы позволяют создавать пользовательские расчётные ряды на основе метрик графика. Комбинируйте, преобразуйте и анализируйте метрики с помощью арифметических операторов и встроенных функций.
Добавление формулы
- Откройте график в режиме редактирования
- Нажмите кнопку + Добавить, затем выберите Добавить формулу
- Введите название (например, «7-дневная SMA цены»)
- Введите выражение (например,
sma(m1, 7)) - Нажмите Добавить формулу
Результат формулы появится на графике как новый ряд со своим цветом и оформлением.
Синтаксис
Ссылки на метрики и формулы
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)
Функции
Скользящие средние и скользящая статистика
| Функция | Синтаксис | Описание |
|---|---|---|
sma | sma(series, period) | Простое скользящее среднее — среднее арифметическое по последним N точкам данных |
ema | ema(series, period) | Экспоненциальное скользящее среднее — EMA_t = value_t × k + EMA_(t-1) × (1 - k), где k = 2 / (period + 1). Придаёт больший вес недавним значениям |
median | median(series, period) | Скользящая медиана (срединное значение) за N периодов |
sum | sum(series, period) | Скользящая сумма по последним N периодам |
std | std(series, period) | Скользящее стандартное отклонение за N периодов |
Кумулятивные функции
Функции с расширяющимся окном, использующие все данные от начала и до каждой точки:
| Функция | Синтаксис | Описание |
|---|---|---|
cumsum | cumsum(series) | Расширяющаяся накопленная сумма от начала данных |
cummean | cummean(series) | Расширяющееся накопленное среднее от начала данных |
cummedian | cummedian(series) | Расширяющаяся накопленная медиана от начала данных |
cumstd | cumstd(series) | Расширяющееся накопленное стандартное отклонение от начала данных |
cummax | cummax(series) | Кумулятивный исторический максимум до каждой точки |
cummin | cummin(series) | Кумулятивный исторический минимум до каждой точки |
Функции изменения
| Функция | Синтаксис | Описание |
|---|---|---|
percent_change | percent_change(series, period) | Процентное изменение за N периодов. Значения возвращаются в виде десятичных дробей (например, 0.20 = рост на +20%) |
diff | diff(series, period) | Абсолютное изменение за N периодов: value_t - value_(t-N) |
Математические функции
| Функция | Синтаксис | Описание |
|---|---|---|
abs | abs(series) | Абсолютное значение всех точек данных |
pow | pow(series, n) | Возведение всех точек данных в степень n |
log | log(series) | Десятичный логарифм (возвращает null для неположительных значений) |
round | round(series, digits) | Округление значений до N знаков после запятой |
max | max(a, b, ...) | Поточечный максимум — возвращает наибольшее значение среди всех аргументов в каждой точке данных. Аргументы могут быть рядами или константами, например max(m1, m2, 0) |
min | min(a, b, ...) | Поточечный минимум — возвращает наименьшее значение среди всех аргументов в каждой точке данных. Аргументы могут быть рядами или константами, например min(m1, m2, 100) |
Технические индикаторы
| Функция | Синтаксис | Описание |
|---|---|---|
rsi | rsi(series, period) | Индекс относительной силы (0–100) с использованием метода сглаживания Уайлдера за N периодов |
corr | corr(series1, series2, period) | Коэффициент корреляции Пирсона между двумя рядами по скользящему окну в N периодов. Возвращает значения от -1 (обратная корреляция) до +1 (полная корреляция) |
drawdown | drawdown(series) | Относительная просадка от исторического максимума. Возвращает отрицательные десятичные дроби (например, -0.30 = на 30% ниже ATH) |
Риск и доходность
| Функция | Синтаксис | Описание |
|---|---|---|
mean_return | mean_return(series, period) | Годовая скользящая средняя доходность за N периодов (на основе дневной логарифмической доходности × 365) |
realized_vol | realized_vol(series, period) | Годовая реализованная волатильность за N периодов (стандартное отклонение дневной логарифмической доходности × √365) |
sharpe_ratio_arithmetic | sharpe_ratio_arithmetic(series, period) | Годовой коэффициент Шарпа на основе среднего арифметического доходностей за N периодов |
sharpe_ratio_geometric | sharpe_ratio_geometric(series, period) | Годовой коэффициент Шарпа на основе среднего геометрического доходностей за N периодов |
Преобразование рядов
| Функция | Синтаксис | Описание |
|---|---|---|
shift | shift(series, period) | Сдвиг ряда вправо на N периодов. Положительный период показывает прошлые значения в текущей позиции (т.е. каждая точка данных отображает значение на N периодов раньше). Отрицательный период сдвигает влево (показывает будущие значения) |
if | if(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. Заголовком столбца каждой формулы служит её название.