AIQT 自定义指标规范

自定义指标的自然语言规则

自定义指标中的表达式,买入条件和卖出条件的程序语句编写支持中文自然语言。中文自然语言的程序语句书写应严格按照如下规则格式。

1. 简单计算项:指计算表达式,可用四则运算和括号以及常规非集合函数。

举例:最高价 - 最低价、收盘价 / 昨日收盘价、ln(最高价 / 最低价)*10

2. 简单条件项:由 < 简单计算项 > 和 < 比较词 > 及 < 连词 > 构成的条件运算式。

举例:收盘价 > 开盘价且成交量 > 昨日成交量

3. 复合项

(1) < 指标 X>

举例:收盘价,指今日收盘价

SPL 解释:X

(2) 昨日 < 指标 X>

举例:昨日收盘价、昨日成交量

SPL 解释:X[-1]

(3) 前日 < 指标 X>

举例:前日收盘价

SPL 解释:X[-2]

(4) < 整数 n> 日前 < 指标 X>

举例:5 日前收盘价

SPL 解释:X[-n]

(5) < 整数 n> 日 < 指标 X>

举例:5 日收盘价,表示取近 5 日的收盘价

SPL 解释:X[-n+1:0]

(6) <整数n> 日 < 指标X>< 聚合词s>

举例:5 日最高价最大,表示从当日开始,往前取 5 天的最高价计算其最大值。

SPL 解释:s(X[-n+1:0])

(7) <整数n> 日 < 指标X>< 选出词 >< 参数k>[名 | 个]< 聚合词s>

举例:10 日收盘价最小前 3 名平均,表示从当日开始,往前取 10 天的收盘价,然后从中取最小的 3 个收盘价计算其平均值

SPL 解释:s(~[-n+1:0].top(k,X))

(8) < 整数 n> 日内 < 指标 X>< 选出词 > 的 < 指标 Y>

举例:10 日内最高价最大者的收盘价,表示往前 10 日内最高价最大那天的收盘价

SPL 解释:~[-n+1:0].maxp@z(X).Y

(9) <整数n> 日内 < 指标X>< 选出词 >[ 参数k][名 | 个] 的 < 指标Y>< 聚合词s>。[] 表示选填

例 1:10 日内最低价最小的收盘价平均

表示取 10 日内的最低价最低的日期(可能有多个)对应的收盘价,并计算这几日收盘价的平均值

SPL 解释:s(~[-n+1:0].maxp@a(X).(Y))

例 2:10 日内最低价最小前 3 名的收盘价平均

表示取 10 日内的最低价最小的前 3 名日期对应的收盘价,并计算这 3 日收盘价的平均值

SPL 解释:s(~[-n+1:0].top(k;X).(Y))

(10) < 整数 n> 日内 < 简单条件项 x> 的 < 指标 Y>

举例:10 日内成交量大于 1000 的收盘价

表示从后往前找 10 日内第 1 个成交量大于 1000 的日期对应的收盘价

SPL 解释:~[-n+1:0].select@z1(x).Y

(11) < 整数 n> 日内 < 简单条件项 x> 的 < 指标 Y>< 聚合词 s>

举例:10 日内成交量大于 1000 的收盘价平均

表示找 10 日内所有成交量大于 1000 的日期,然后取对应的收盘价

SPL 解释:s(~[-n+1:0].select(x).(Y))

(12) <整数n> 日内 < 简单条件项x> 的 < 指标X>< 选出词 >< 参数k>[名 | 个]< 聚合词s>

举例:10 日内成交量大于 1000 的收盘价最大前 5 名平均

表示找 10 日内所有成交量大于 1000 的日期,从中取最大的前 5 名收盘价计算其平均值

SPL 解释:s(~[-n+1:0].select(x).top(k,X))

规则中涉及到的概念解释

四则运算和括号:指基础运算包括 +、-、*、/、\、%、()等常规基础运算,更多详情可查阅 SPL 函数参考操作符

常规非集合函数:包括 ln()、lg()、abs() 等常用数学函数,更多详情可查阅 SPL 函数参考数学

比较词:指大于、小于、等于、不等于、大于等于、小于等于。

连词:指且、或。

指标:指参与计算的字段,如收盘价、开盘价、成交量……

聚合词:表示聚合运算,包括:合计、平均、最大 / 最大值、最小 / 最小值、方差、标准差、中位数

<选出词 >< 参数k>:包括最高前 / 最大前、最低前 / 最小前

选出词:包括最高 / 最大 / 最高值 / 最大者、最低 / 最小 / 最低者 / 最小者