Fórmulas
As fórmulas permitem criar séries calculadas personalizadas a partir das métricas de um gráfico. Combine, transforme e analise métricas usando operadores aritméticos e funções integradas.
Adicionar uma fórmula
- Abra um gráfico no modo de edição
- Clique no botão + Adicionar e selecione Adicionar fórmula
- Insira um rótulo (por exemplo, "SMA de 7 dias do preço")
- Insira uma expressão (por exemplo,
sma(m1, 7)) - Clique em Adicionar fórmula
O resultado da fórmula aparece como uma nova série no gráfico, com sua própria cor e estilo.
Sintaxe
Referências a métricas e fórmulas
m1,m2, ... referenciam as métricas do gráfico por posição (primeira métrica = m1)f1,f2, ... referenciam fórmulas anteriores por posição (primeira fórmula = f1)
As fórmulas são avaliadas em ordem, portanto f2 pode referenciar f1, mas não o contrário.
Operadores aritméticos
Operadores padrão com precedência normal (* e / antes de + e -):
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 e linhas horizontais
Valores constantes podem ser usados em expressões. Um número isolado desenha uma linha horizontal naquele 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)
Funções
Médias móveis e estatísticas móveis
| Função | Sintaxe | Descrição |
|---|---|---|
sma | sma(series, period) | Média Móvel Simples — média aritmética sobre os últimos N pontos de dados |
ema | ema(series, period) | Média Móvel Exponencial — EMA_t = value_t × k + EMA_(t-1) × (1 - k), onde k = 2 / (period + 1). Atribui mais peso aos valores recentes |
median | median(series, period) | Mediana móvel (valor central) ao longo de N períodos |
sum | sum(series, period) | Soma móvel sobre os últimos N períodos |
std | std(series, period) | Desvio padrão móvel ao longo de N períodos |
Funções cumulativas
Funções de janela expansível que usam todos os dados desde o início até cada ponto:
| Função | Sintaxe | Descrição |
|---|---|---|
cumsum | cumsum(series) | Soma cumulativa expansível a partir do início dos dados |
cummean | cummean(series) | Média cumulativa expansível a partir do início dos dados |
cummedian | cummedian(series) | Mediana cumulativa expansível a partir do início dos dados |
cumstd | cumstd(series) | Desvio padrão cumulativo expansível a partir do início dos dados |
cummax | cummax(series) | Máximo histórico acumulado até cada ponto |
cummin | cummin(series) | Mínimo histórico acumulado até cada ponto |
Funções de variação
| Função | Sintaxe | Descrição |
|---|---|---|
percent_change | percent_change(series, period) | Variação percentual ao longo de N períodos. Os valores são retornados como decimais (por exemplo, 0,20 = +20% de crescimento) |
diff | diff(series, period) | Variação de valor absoluto ao longo de N períodos: value_t - value_(t-N) |
Funções matemáticas
| Função | Sintaxe | Descrição |
|---|---|---|
abs | abs(series) | Valor absoluto de todos os pontos de dados |
pow | pow(series, n) | Eleva todos os pontos de dados à potência n |
log | log(series) | Logaritmo de base 10 (retorna null para valores não positivos) |
round | round(series, digits) | Arredonda os valores para N casas decimais |
max | max(a, b, ...) | Máximo ponto a ponto — retorna o maior valor entre todos os argumentos em cada ponto de dados. Os argumentos podem ser séries ou constantes, por exemplo max(m1, m2, 0) |
min | min(a, b, ...) | Mínimo ponto a ponto — retorna o menor valor entre todos os argumentos em cada ponto de dados. Os argumentos podem ser séries ou constantes, por exemplo min(m1, m2, 100) |
Indicadores técnicos
| Função | Sintaxe | Descrição |
|---|---|---|
rsi | rsi(series, period) | Índice de Força Relativa (0–100) usando o método de suavização de Wilder ao longo de N períodos |
corr | corr(series1, series2, period) | Coeficiente de correlação de Pearson entre duas séries ao longo de uma janela móvel de N períodos. Retorna valores de -1 (inverso) a +1 (perfeitamente correlacionado) |
drawdown | drawdown(series) | Drawdown relativo em relação à máxima histórica. Retorna decimais negativos (por exemplo, -0,30 = 30% abaixo da ATH) |
Risco e retorno
| Função | Sintaxe | Descrição |
|---|---|---|
mean_return | mean_return(series, period) | Retorno médio móvel anualizado ao longo de N períodos (baseado em retornos logarítmicos diários × 365) |
realized_vol | realized_vol(series, period) | Volatilidade realizada anualizada ao longo de N períodos (desvio padrão do retorno logarítmico diário × √365) |
sharpe_ratio_arithmetic | sharpe_ratio_arithmetic(series, period) | Índice de Sharpe anualizado usando a média aritmética dos retornos ao longo de N períodos |
sharpe_ratio_geometric | sharpe_ratio_geometric(series, period) | Índice de Sharpe anualizado usando a média geométrica dos retornos ao longo de N períodos |
Manipulação de séries
| Função | Sintaxe | Descrição |
|---|---|---|
shift | shift(series, period) | Desloca a série para a direita em N períodos. Um período positivo mostra valores passados na posição atual (ou seja, cada ponto de dados exibe o valor de N períodos atrás). Um período negativo desloca para a esquerda (mostra valores futuros) |
if | if(a, "op", b, then, else) | Condicional: avalia a comparação a op b em cada ponto de dados, retorna then se verdadeiro, else se falso. O argumento op é um operador de comparação passado como uma string entre aspas: "=", "!=", ">", ">=", "<", "<=" |
Exemplos
Médias móveis
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
Detecção de cruzamento 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álise de razão
m1 / m2 # Ratio between two metrics
Drawdown em relação à máxima histórica
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)
Variação período a período
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
Limitação 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
Correlação
corr(m1, m2, 30) # 30-day rolling correlation between two metrics
Volatilidade e risco
realized_vol(m1, 30) # 30-day annualized volatility
sharpe_ratio_arithmetic(m1, 90) # 90-day annualized Sharpe ratio
Estilo
Depois de adicionar uma fórmula, clique nela na legenda (no modo de edição) para configurar:
- Estilo do gráfico: Linha, Área ou Barra
- Cor: Escolha entre predefinições ou personalizada
- Eixo Y: Atribua a qualquer eixo
- Largura da linha e opacidade do preenchimento
- Visibilidade: Alternar entre exibir/ocultar
Persistência
As fórmulas são salvas com a configuração do gráfico. Quando você salva um gráfico em "Meus gráficos", todas as fórmulas são preservadas e restauradas ao recarregar o gráfico.
Exportação
Os valores das fórmulas são incluídos nas exportações em CSV e JSON. Cada coluna de fórmula usa o rótulo da fórmula como cabeçalho.