Fórmulas
Las fórmulas le permiten crear series calculadas personalizadas a partir de las métricas del gráfico. Combine, transforme y analice métricas mediante operadores aritméticos y funciones integradas.
Añadir una fórmula
- Abra un gráfico en modo de edición
- Haga clic en el botón + Añadir y luego seleccione Añadir fórmula
- Introduzca una etiqueta (p. ej., "SMA de 7 días del precio")
- Introduzca una expresión (p. ej.,
sma(m1, 7)) - Haga clic en Añadir fórmula
El resultado de la fórmula aparece como una nueva serie en el gráfico, con su propio color y estilo.
Sintaxis
Referencias a métricas y fórmulas
m1,m2, ... hacen referencia a las métricas del gráfico por posición (la primera métrica = m1)f1,f2, ... hacen referencia a fórmulas anteriores por posición (la primera fórmula = f1)
Las fórmulas se evalúan en orden, por lo que f2 puede hacer referencia a f1, pero no al revés.
Operadores aritméticos
Operadores estándar con la precedencia habitual (* y / antes que + y -):
m1 + m2 # Addition
m1 - m2 # Subtraction
m1 * m2 # Multiplication
m1 / m2 # Division (returns null if divisor is 0)
(m1 + m2) * m3 # Parentheses for grouping
Números y líneas horizontales
Se pueden usar valores constantes en las expresiones. Un número aislado dibuja una línea horizontal en ese valor:
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)
Funciones
Medias móviles y estadísticas móviles
| Función | Sintaxis | Descripción |
|---|---|---|
sma | sma(series, period) | Media móvil simple (SMA): media aritmética sobre los últimos N puntos de datos |
ema | ema(series, period) | Media móvil exponencial (EMA): EMA_t = value_t × k + EMA_(t-1) × (1 - k), donde k = 2 / (period + 1). Da más peso a los valores recientes |
median | median(series, period) | Mediana móvil (valor central) sobre N periodos |
sum | sum(series, period) | Suma móvil sobre los últimos N periodos |
std | std(series, period) | Desviación estándar móvil sobre N periodos |
Funciones acumulativas
Funciones de ventana expansiva que utilizan todos los datos desde el inicio hasta cada punto:
| Función | Sintaxis | Descripción |
|---|---|---|
cumsum | cumsum(series) | Suma acumulada expansiva desde el inicio de los datos |
cummean | cummean(series) | Media acumulada expansiva desde el inicio de los datos |
cummedian | cummedian(series) | Mediana acumulada expansiva desde el inicio de los datos |
cumstd | cumstd(series) | Desviación estándar acumulada expansiva desde el inicio de los datos |
cummax | cummax(series) | Máximo histórico acumulado hasta cada punto |
cummin | cummin(series) | Mínimo histórico acumulado hasta cada punto |
Funciones de variación
| Función | Sintaxis | Descripción |
|---|---|---|
percent_change | percent_change(series, period) | Variación porcentual sobre N periodos. Los valores se devuelven como decimales (p. ej., 0,20 = +20 % de crecimiento) |
diff | diff(series, period) | Variación de valor absoluto sobre N periodos: value_t - value_(t-N) |
Funciones matemáticas
| Función | Sintaxis | Descripción |
|---|---|---|
abs | abs(series) | Valor absoluto de todos los puntos de datos |
pow | pow(series, n) | Eleva todos los puntos de datos a la potencia n |
log | log(series) | Logaritmo en base 10 (devuelve null para valores no positivos) |
round | round(series, digits) | Redondea los valores a N posiciones decimales |
max | max(a, b, ...) | Máximo punto a punto: devuelve el valor más alto entre todos los argumentos en cada punto de datos. Los argumentos pueden ser series o constantes, p. ej. max(m1, m2, 0) |
min | min(a, b, ...) | Mínimo punto a punto: devuelve el valor más bajo entre todos los argumentos en cada punto de datos. Los argumentos pueden ser series o constantes, p. ej. min(m1, m2, 100) |
Indicadores técnicos
| Función | Sintaxis | Descripción |
|---|---|---|
rsi | rsi(series, period) | Índice de fuerza relativa (RSI) (0–100) mediante el método de suavizado de Wilder sobre N periodos |
corr | corr(series1, series2, period) | Coeficiente de correlación de Pearson entre dos series sobre una ventana móvil de N periodos. Devuelve valores de -1 (inversa) a +1 (perfectamente correlacionadas) |
drawdown | drawdown(series) | Caída relativa (drawdown) desde el máximo histórico. Devuelve decimales negativos (p. ej., -0,30 = 30 % por debajo del ATH) |
Riesgo y rentabilidad
| Función | Sintaxis | Descripción |
|---|---|---|
mean_return | mean_return(series, period) | Rentabilidad media móvil anualizada sobre N periodos (basada en los rendimientos logarítmicos diarios × 365) |
realized_vol | realized_vol(series, period) | Volatilidad realizada anualizada sobre N periodos (desviación estándar del rendimiento logarítmico diario × √365) |
sharpe_ratio_arithmetic | sharpe_ratio_arithmetic(series, period) | Ratio de Sharpe anualizado usando la media aritmética de los rendimientos sobre N periodos |
sharpe_ratio_geometric | sharpe_ratio_geometric(series, period) | Ratio de Sharpe anualizado usando la media geométrica de los rendimientos sobre N periodos |
Manipulación de series
| Función | Sintaxis | Descripción |
|---|---|---|
shift | shift(series, period) | Desplaza la serie hacia la derecha N periodos. Un periodo positivo muestra valores pasados en la posición actual (es decir, cada punto de datos muestra el valor de hace N periodos). Un periodo negativo desplaza hacia la izquierda (muestra valores futuros) |
if | if(a, "op", b, then, else) | Condicional: evalúa la comparación a op b en cada punto de datos, devuelve then si es verdadera y else si es falsa. El argumento op es un operador de comparación pasado como cadena entre comillas: "=", "!=", ">", ">=", "<", "<=" |
Ejemplos
Medias móviles
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
Detección de cruce de SMA
f1: sma(m1, 7) # Short-term SMA
f2: sma(m1, 30) # Long-term SMA
f3: f1 - f2 # Difference (positive = short above long)
Análisis de ratios
m1 / m2 # Ratio between two metrics
Caída desde el máximo histórico
drawdown(m1) # Drawdown as negative decimal (-0.30 = 30% below ATH)
Bandas de Bollinger
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)
Variación periodo a periodo
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
Acotación de valores
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
Correlación
corr(m1, m2, 30) # 30-day rolling correlation between two metrics
Volatilidad y riesgo
realized_vol(m1, 30) # 30-day annualized volatility
sharpe_ratio_arithmetic(m1, 90) # 90-day annualized Sharpe ratio
Estilo
Después de añadir una fórmula, haga clic sobre ella en la leyenda (en modo de edición) para configurar:
- Estilo de gráfico: línea, área o barra
- Color: elija entre preajustes o uno personalizado
- Eje Y: asígnelo a cualquier eje
- Grosor de línea y opacidad de relleno
- Visibilidad: alternar mostrar/ocultar
Persistencia
Las fórmulas se guardan con la configuración del gráfico. Cuando guarda un gráfico en "Mis gráficos", todas las fórmulas se conservan y se restauran al recargar el gráfico.
Exportación
Los valores de las fórmulas se incluyen en las exportaciones CSV y JSON. Cada columna de fórmula usa la etiqueta de la fórmula como encabezado.