公式
公式让你能够根据图表指标创建自定义的计算序列。使用算术运算符和内置函数对指标进行组合、变换和分析。
添加公式
- 在编辑模式下打开图表
- 点击 + Add 按钮,然后选择 Add Formula
- 输入一个标签(例如,"7-day SMA of Price")
- 输入一个表达式(例如,
sma(m1, 7)) - 点击 Add Formula
公式结果会作为一条新序列显示在图表上,并拥有自己的颜色和样式。
语法
指标与公式引用
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) | 以 10 为底的对数(对非正值返回 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 个周期上使用 Wilder 平滑法计算 |
corr | corr(series1, series2, period) | 两个序列在 N 个周期的尾部窗口上的 Pearson 相关系数。返回值从 -1(反向)到 +1(完全正相关) |
drawdown | drawdown(series) | 相对于历史最高点的相对回撤。返回负小数(例如,-0.30 = 低于 ATH 30%) |
风险与回报
| 函数 | 语法 | 说明 |
|---|---|---|
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 比率 |
sharpe_ratio_geometric | sharpe_ratio_geometric(series, period) | 在 N 个周期上使用回报几何平均值计算的年化 Sharpe 比率 |
序列操作
| 函数 | 语法 | 说明 |
|---|---|---|
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 轴:分配到任意坐标轴
- 线宽和填充不透明度
- 可见性:显示/隐藏切换
持久化
公式会与图表配置一起保存。当你将图表保存到 "My Charts" 时,所有公式都会被保留,并在重新加载图表时恢复。
导出
公式值会包含在 CSV 和 JSON 导出中。每一列公式以该公式的标签作为表头。