统计与指标函数
策略的「判断」部分,九成靠统计指标函数:算均线、找极值、量波动、判穿越。 本章把 TBQuant 里最高频的一批统计与指标函数整理成速查表,配上示例。
均线类
| 函数 | 签名 | 说明 |
|---|---|---|
AverageFC | Numeric AverageFC(Numeric Price, Numeric Length) | 快速简单移动平均(Length 不能用变量) |
Average | Numeric Average(Numeric Price, Numeric Length) | 简单移动平均(Length 可用变量,稍慢) |
XAverage | Numeric XAverage(Numeric Price, Numeric Length) | 指数加权移动平均(EMA),近期权重更大 |
ma5 = AverageFC(Close, 5); // 5 周期简单均线
ema20 = XAverage(Close, 20); // 20 周期指数均线
AverageFC比Average快,但第二个参数(周期)必须是常量,不能用变量;需要动态周期时用Average。 跨平台对比均线写法,可看 均线指标详解(含 TBQuant 的AverageFC)。
极值与求和
| 函数 | 说明 |
|---|---|
Highest(Price, Length) | 过去 Length 周期 Price 的最高值 |
Lowest(Price, Length) | 过去 Length 周期 Price 的最低值 |
HighestBar(Price, Length) | 最高值出现在几根之前 |
LowestBar(Price, Length) | 最低值出现在几根之前 |
Summation(Price, Length) | 过去 Length 周期 Price 的累加和 |
SummationFC(Price, Length) | 快速累加和 |
Numeric hh = Highest(High, 20); // 20 日最高价(突破阻力)
Numeric ll = Lowest(Low, 20); // 20 日最低价(跌破支撑)
波动与分布
| 函数 | 说明 |
|---|---|
StandardDev(Price, Length, DataType) | 标准差;DataType=1 总体方差,2 样本方差 |
VariancePS(Price, Length) | 估计方差 |
AvgDeviation(Price, Length) | 平均偏差 |
Numeric vola = StandardDev(Close, 20, 2); // 20 周期收盘价标准差(衡量波动)
布林带的核心就是「均线 ± N 倍标准差」,用 AverageFC + StandardDev 即可手搓。
交叉判断
| 函数 | 签名 | 说明 |
|---|---|---|
CrossOver | Bool CrossOver(Series<Numeric> P1, Series<Numeric> P2) | P1 上穿 P2 返回 True |
CrossUnder | Bool CrossUnder(Series<Numeric> P1, Series<Numeric> P2) | P1 下穿 P2 返回 True |
Bool golden = CrossOver(maFast, maSlow); // 金叉
Bool death = CrossUnder(maFast, maSlow); // 死叉
重要提示:官方文档特别提醒,判断穿越时尽量避免用
Close这种不确定的元素,否则实盘会信号闪烁。 一般用High配CrossOver(向上突破)、Low配CrossUnder(向下突破)更稳健。
条件与逻辑
| 函数 | 说明 |
|---|---|
IIF(Cond, TrueVal, FalseVal) | 三元:条件成立取 TrueVal,否则 FalseVal |
IIFString(Cond, TrueVal, FalseVal) | 字符串版三元 |
Compare(A, B) | 数值比较 |
Sign(X) | 符号函数(-1/0/1) |
Numeric body = IIF(Close > Open, Close - Open, Open - Close); // K 线实体大小
数学计算(精选)
| 函数 | 说明 |
|---|---|
Abs(X) | 绝对值 |
Max(A, B) / Min(A, B) | 最大/最小值 |
Sqrt(X) / Sqr(X) | 平方根 / 平方 |
Power(X, N) / Exp(X) | 乘幂 / e 的 N 次幂 |
Round(X, D) | 保留 D 位小数四舍五入 |
Mod(A, B) | 取余 |
完整函数库(数百个)可在公式编辑器里通过「帮助」查看官方文档;这里只列策略最高频的部分。
综合:带波动的突破策略片段
Vars
Numeric upper;
Numeric lower;
Events
OnBar(ArrayRef<Integer> indexs)
{
upper = AverageFC(Close, 20) + 2 * StandardDev(Close, 20, 2);
lower = AverageFC(Close, 20) - 2 * StandardDev(Close, 20, 2);
If (MarketPosition != 1 && CrossOver(High, upper))
Buy(1, Open); // 突破上轨买开
If (MarketPosition == 1 && CrossUnder(Low, lower))
Sell(0, Open); // 跌破下轨卖平
}
小结
- 均线用
AverageFC(快,常量周期)/Average(变量周期)/XAverage(EMA)。 - 极值
Highest/Lowest、波动StandardDev、求和Summation。 - 交叉
CrossOver/CrossUnder,但实盘别用Close判断,改用High/Low防闪烁。 - 条件用
IIF,数学用Abs/Max/Min/Round等。
下一步
逻辑写好了,接下来用历史数据回测验证策略到底赚不赚钱: 策略回测。