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>:包括最高前 / 最大前、最低前 / 最小前
选出词:包括最高 / 最大 / 最高值 / 最大者、最低 / 最小 / 最低者 / 最小者
