InfluxQL分析函数
使用技术分析函数将算法应用于您的数据 - 通常用于分析金融和投资数据。
下面的每个分析函数涵盖语法,包括传递给函数的参数,以及如何使用函数的示例。示例使用NOAA水样数据。
预测分析
预测分析函数是一种技术分析算法,用于预测和预报未来的值。
HOLT_WINTERS()
返回 N 个预测的 字段值,使用 Holt-Winters 季节性方法。支持 int64 和 float64 字段值 数据类型。适用于在一致时间间隔内发生的数据。需要一个 InfluxQL 函数和 GROUP BY time() 子句,以确保 Holt-Winters 函数在规则数据上运行。
使用 HOLT_WINTERS() 来:
- 预测数据值何时会超过给定阈值
- 将预测值与实际值进行比较,以检测数据中的异常
语法
SELECT HOLT_WINTERS[_WITH-FIT](<function>(<field_key>),<N>,<S>) FROM_clause [WHERE_clause] GROUP_BY_clause [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]
HOLT_WINTERS(function(field_key),N,S) 返回 N 个季节性调整的
预测字段值,针对指定的 field key。
预测的 N 值与 GROUP BY time() 的时间间隔 相同。如果你的 GROUP BY time() 间隔是 6m 且 N 是 3,你将会收到三个每个间隔六分钟的预测值。
S 是季节模式参数,并根据 GROUP BY time() 时间间隔限定季节模式的长度。
如果您的 GROUP BY time() 时间间隔为 2m,并且 S 为 3,那么季节模式每六分钟出现一次,也就是每三个数据点出现一次。
如果您不想对预测值进行季节性调整,请将 S 设置为 0 或 1.
HOLT_WINTERS_WITH_FIT(function(field_key),N,S) 返回拟合值以及为指定字段键调整的 N 个季节性预测字段值。
示例
与 HOLT_WINTERS() 相关的常见问题
接收少于 N 个积分
在某些情况下,您可能会收到的预测点数少于N参数请求的数量。 这种情况通常发生在数学变得不稳定并且无法预测更多点时。在这种情况下,HOLT_WINTERS()可能不适合该数据集,或者季节调整参数无效。
技术分析函数
技术分析函数广泛应用于您的数据。虽然它们主要用于金融和投资,但也在其他行业中有应用。
对于技术分析函数,请考虑是否包含 PERIOD、HOLD_PERIOD 和 WARMUP_TYPE 参数:
PERIOD
必需,整数,最小值=1
算法的样本大小,即对算法输出有显著影响的历史样本数量。 例如,2表示当前点和之前的点。 算法使用指数衰减率来确定历史点的权重,通常称为α(alpha)。 PERIOD控制衰减率。
注意:较旧的点仍然可以产生影响。
HOLD_PERIOD
整数,最小值=-1
算法在输出结果之前需要多少样本。
-1 的默认值意味着该值是基于算法、PERIOD 和 WARMUP_TYPE。验证该值是否足以使算法输出有意义的结果。
默认持有期限:
对于大多数技术分析函数,默认的 HOLD_PERIOD 由函数和下表中显示的 WARMUP_TYPE 决定:
| 算法 \ 热身类型 | 简单 | 指数 | 无 |
|---|---|---|---|
| EXPONENTIAL_MOVING_AVERAGE | 周期 - 1 | 周期 - 1 | 不适用 |
| DOUBLE_EXPONENTIAL_MOVING_AVERAGE | ( PERIOD - 1 ) * 2 | PERIOD - 1 | 不适用 |
| TRIPLE_EXPONENTIAL_MOVING_AVERAGE | ( PERIOD - 1 ) * 3 | PERIOD - 1 | 不适用 |
| TRIPLE_EXPONENTIAL_DERIVATIVE | ( PERIOD - 1 ) * 3 + 1 | PERIOD | 不适用 |
| RELATIVE_STRENGTH_INDEX | 周期 | 周期 | 不适用 |
| CHANDE_MOMENTUM_OSCILLATOR | 周期 | 周期 | 周期 - 1 |
考夫曼算法默认持有期:
| 算法 | 默认持有期限 |
|---|---|
| KAUFMANS_EFFICIENCY_RATIO() | 周期 |
| KAUFMANS_ADAPTIVE_MOVING_AVERAGE() | 周期 |
WARMUP_TYPE
默认=‘exponential’
控制算法如何为前 PERIOD 样本初始化。 实际上,它是其拥有不完整样本集的持续时间。
简单
前 PERIOD 个样本的简单移动平均 (SMA)。
这是 ta-lib 使用的方法。
指数
指数移动平均(EMA)与缩放因子α (α)。
对于第一个点,使用PERIOD=1的EMA,对于第二个点,使用PERIOD=2,
依此类推,直到算法消耗PERIOD数量的点。
由于该算法在使用此方法时立即开始使用EMA,并且HOLD_PERIOD未指定或-1,算法可能在比simple更小的样本量后开始发出点。
无
该算法根本不执行任何平滑操作。
使用的方法是 ta-lib。
当使用此方法且 HOLD_PERIOD 未指定时,HOLD_PERIOD 默认为 PERIOD - 1。
注意: none 预热类型仅在 CHANDE_MOMENTUM_OSCILLATOR() 函数中可用。
CHANDE_MOMENTUM_OSCILLATOR()
钱德动量振荡器(CMO)是由图沙尔·钱德开发的技术动量指标。 CMO指标通过计算最近所有较高数据点的总和与最近所有较低数据点的总和之间的差异来创建,然后将结果除以给定时间段内所有数据变动的总和。结果乘以100,以给出-100到+100的范围。 Source
支持按标签分组的GROUP BY子句,但不支持按时间分组的GROUP BY子句。要使用CHANDE_MOMENTUM_OSCILLATOR()与GROUP BY time()子句,请参见高级语法。
基本语法
CHANDE_MOMENTUM_OSCILLATOR([ * | <field_key> | /regular_expression/ ], <period>[, <hold_period>, [warmup_type]])
参数
- 周期
- (可选) hold_period
- (可选) warmup_type
CHANDE_MOMENTUM_OSCILLATOR(field_key, 2)
返回与字段键相关的字段值,这些值使用Chande动量振荡器算法处理,周期为2,默认的保持期和预热类型。
CHANDE_MOMENTUM_OSCILLATOR(field_key, 10, 9, 'none')
返回与field key相关的字段值,该值使用Chande动量振荡器算法处理,周期为10,保持期为9,预热类型为none。
CHANDE_MOMENTUM_OSCILLATOR(MEAN(<field_key>), 2) ... GROUP BY time(1d)
返回与字段键相关联的字段值的平均值,使用Chande动量振荡器算法处理,周期为2值,默认保持周期和预热类型。
注意: 使用GROUP BY 子句聚合数据时,您必须在调用CHANDE_MOMENTUM_OSCILLATOR() 函数时包含一个聚合函数。
CHANDE_MOMENTUM_OSCILLATOR(/regular_expression/, 2)
返回与匹配的每个字段键相关联的字段值,该匹配是使用Chande动量振荡器算法处理的,周期为2,默认保持周期和预热类型。
CHANDE_MOMENTUM_OSCILLATOR(*, 2)
返回与每个字段键关联的字段值,在measurement中处理,使用Chande动量振荡器算法,周期为2值,使用默认的保持周期和预热类型。
CHANDE_MOMENTUM_OSCILLATOR() 支持 int64 和 float64 字段值 数据类型。
指数移动平均值()
指数移动平均(EMA)(或指数加权移动平均)是一种移动平均,类似于简单移动平均,但对最新数据赋予更多的权重。
这种类型的移动平均比简单移动平均对最近数据变化反应更快。 来源
支持 GROUP BY 子句,这些子句 按标签分组 ,但不支持 GROUP BY 子句,这些子句 按时间分组 。要使用 EXPONENTIAL_MOVING_AVERAGE() 与 GROUP BY time() 子句,请参见 高级语法 。
基本语法
EXPONENTIAL_MOVING_AVERAGE([ * | <field_key> | /regular_expression/ ], <period>[, <hold_period)[, <warmup_type]])
EXPONENTIAL_MOVING_AVERAGE(field_key, 2)
返回与字段键关联的字段值,这些值使用具有2值周期的指数移动平均算法处理,并采用默认的保持周期和预热类型。
EXPONENTIAL_MOVING_AVERAGE(field_key, 10, 9, 'exponential')
返回与字段键相关联的字段值,这些值使用指数移动平均算法进行处理,周期为10个值,保持期为9个值,且采用exponential预热类型。
EXPONENTIAL_MOVING_AVERAGE(MEAN(<field_key>), 2) ... GROUP BY time(1d)
返回与字段键相关联的字段值的均值,使用带有2值周期的指数移动平均算法处理,以及默认的保持周期和预热类型。
注意: 当使用 GROUP BY 子句聚合数据时,您必须在对 EXPONENTIAL_MOVING_AVERAGE() 函数的调用中包含一个 聚合函数。
EXPONENTIAL_MOVING_AVERAGE(/regular_expression/, 2)
返回与每个字段键相关联的字段值,这些键与正则表达式匹配
使用具有2值周期的指数移动平均算法处理,并使用默认的保持周期和预热类型。
EXPONENTIAL_MOVING_AVERAGE(*, 2)
返回与每个字段键相关联的字段值,这些值在measurement中使用2值周期的指数移动平均算法处理,使用默认的保持周期和预热类型。
EXPONENTIAL_MOVING_AVERAGE() 支持 int64 和 float64 字段值 数据类型。
参数
- 周期
- (可选) hold_period
- (可选) warmup_type
双指数移动平均(DOUBLE_EXPONENTIAL_MOVING_AVERAGE)
双指数移动平均(DEMA)试图通过对最近的值赋予更高的权重来消除与移动平均相关的固有滞后。名称暗示这是通过应用双重指数平滑来实现的,但实际上并非如此。EMA 的值被加倍。为了使值与实际数据保持一致并消除滞后,从之前加倍的 EMA 中减去“EMA 的 EMA”值。来源
支持 GROUP BY 子句根据 标签分组,但不支持 GROUP BY 子句根据 时间分组。要在 GROUP BY time() 子句中使用 DOUBLE_EXPONENTIAL_MOVING_AVERAGE(),请参见 高级语法。
基本语法
DOUBLE_EXPONENTIAL_MOVING_AVERAGE([ * | <field_key> | /regular_expression/ ], <period>[, <hold_period)[, <warmup_type]])
DOUBLE_EXPONENTIAL_MOVING_AVERAGE(field_key, 2)
返回与field key相关的字段值,使用双指数移动平均算法处理,周期为2的值,默认的保持周期和预热类型。
DOUBLE_EXPONENTIAL_MOVING_AVERAGE(field_key, 10, 9, 'exponential')
返回与字段键相关的字段值,这些值是使用双重指数移动平均算法进行处理的,周期为10个值,保持期为9个值,以及exponential热身类型。
DOUBLE_EXPONENTIAL_MOVING_AVERAGE(MEAN(<field_key>), 2) ... GROUP BY time(1d)
返回与字段键相关联的字段值的平均值,使用具有2值周期的双指数移动平均算法处理,并使用默认的保持周期和预热类型。
注意: 当使用 GROUP BY 子句进行数据聚合时,您必须在调用 DOUBLE_EXPONENTIAL_MOVING_AVERAGE() 函数时包含一个 聚合函数。
DOUBLE_EXPONENTIAL_MOVING_AVERAGE(/regular_expression/, 2)
返回与每个字段键关联的字段值,这些键匹配正则表达式,并使用具有2值周期的双指数移动平均算法处理,采用默认的保持周期和预热类型。
DOUBLE_EXPONENTIAL_MOVING_AVERAGE(*, 2)
返回与每个字段键相关联的字段值,来自measurement,使用双指数移动平均算法处理,周期为2的值,默认保持周期和预热类型。
DOUBLE_EXPONENTIAL_MOVING_AVERAGE() 支持 int64 和 float64 字段值 数据类型。
参数
- 周期
- (可选) hold_period
- (可选) warmup_type
卡夫曼效率比率()
考夫曼效率比率,简称“效率比率”(ER),通过将一定时期内的数据变化除以实现该变化所发生的数据移动的绝对总和来计算。 结果比率介于0和1之间,值越高表示市场越有效率或趋势明显。
效率比率与Chande Momentum Oscillator (CMO)非常相似。 差别在于CMO考虑了市场方向,但如果你取绝对CMO并除以100,你会得到效率比率。 Source
支持 GROUP BY 子句,该子句 按标签分组,但不支持 GROUP BY 子句,该子句 按时间分组。要使用 KAUFMANS_EFFICIENCY_RATIO() 与 GROUP BY time() 子句,请参阅 高级语法。
基本语法
KAUFMANS_EFFICIENCY_RATIO([ * | <field_key> | /regular_expression/ ], <period>[, <hold_period>])
KAUFMANS_EFFICIENCY_RATIO(field_key, 2)
返回与字段键相关联的字段值,这些值使用效率指数算法处理,周期为2值,默认保持周期和预热类型。
KAUFMANS_EFFICIENCY_RATIO(field_key, 10, 10)
返回与字段键相关联的字段值,使用效率指数算法处理,具有10个值的周期和10个值的保持期。
KAUFMANS_EFFICIENCY_RATIO(MEAN(<field_key>), 2) ... GROUP BY time(1d)
返回与field key相关的字段值的平均值,使用效率指数算法处理,周期为2值,默认持有周期。
注意: 在使用 GROUP BY 子句进行数据聚合时,您必须在调用 KAUFMANS_EFFICIENCY_RATIO() 函数时包含一个 聚合函数。
KAUFMANS_EFFICIENCY_RATIO(/regular_expression/, 2)
返回与每个字段键相关联的字段值,这些键匹配正则表达式,使用效率指数算法处理,周期为2,使用默认的保持周期和预热类型。
KAUFMANS_EFFICIENCY_RATIO(*, 2)
返回与每个字段键相关联的字段值,该字段值在measurement中使用效率指数算法处理,周期为2值,并且默认持有周期和预热类型。
KAUFMANS_EFFICIENCY_RATIO() 支持 int64 和 float64 字段值 数据类型。
参数:
- 周期
- (可选) hold_period
KAUFMANS_ADAPTIVE_MOVING_AVERAGE()
Kaufman 的自适应移动平均线(KAMA)是一种旨在考虑样本噪声或波动的移动平均线。 当数据波动相对较小且噪声水平低时,KAMA 将紧密跟随数据点。 当数据波动加大时,KAMA 将调整并更远地跟随数据。 这个趋势跟随指标可以用来识别整体趋势,确定转折点并过滤数据波动。 Source
支持 GROUP BY 子句来 按标签分组,但不支持 GROUP BY 子句来 按时间分组。要使用 KAUFMANS_ADAPTIVE_MOVING_AVERAGE() 和 GROUP BY time() 子句,请参见 高级语法。
基本语法
KAUFMANS_ADAPTIVE_MOVING_AVERAGE([ * | <field_key> | /regular_expression/ ], <period>[, <hold_period>])
KAUFMANS_ADAPTIVE_MOVING_AVERAGE(field_key, 2)
返回与字段关键相关联的字段值,通过使用具有2值周期的Kaufman自适应移动平均算法进行处理,以及默认的持有周期和预热类型。
KAUFMANS_ADAPTIVE_MOVING_AVERAGE(field_key, 10, 10)
返回与字段键相关联的字段值,使用Kaufman自适应移动平均算法处理,具有10值周期和10值保持周期。
KAUFMANS_ADAPTIVE_MOVING_AVERAGE(MEAN(<field_key>), 2) ... GROUP BY time(1d)
返回与field key相关联的字段值的平均值,这些值使用Kaufman自适应移动平均算法处理,周期为2,默认保持周期。
注意: 当使用 GROUP BY 子句聚合数据时,您必须在调用 KAUFMANS_ADAPTIVE_MOVING_AVERAGE() 函数时包含一个 聚合函数。
KAUFMANS_ADAPTIVE_MOVING_AVERAGE(/regular_expression/, 2)
返回与每个字段键相关联的字段值,这些字段键符合正则表达式,使用Kaufman自适应移动平均算法处理,周期为2值,并使用默认的保持周期和预热类型。
KAUFMANS_ADAPTIVE_MOVING_AVERAGE(*, 2)
返回与每个字段键关联的字段值,在measurement中使用Kaufman自适应移动平均算法处理,周期为2,使用默认的保持期和热身类型。
KAUFMANS_ADAPTIVE_MOVING_AVERAGE() 支持 int64 和 float64 字段值 数据类型。
参数:
- 周期
- (可选) hold_period
三重指数移动平均()
三重指数移动平均 (TEMA) 过滤掉了传统移动平均中的波动性。虽然名称暗示它是三重指数平滑,但实际上它是一个单一指数移动平均、双重指数移动平均和三重指数移动平均的组合。来源
支持 GROUP BY 子句,可以 按标签分组,但不支持 GROUP BY 子句,可以 按时间分组。要使用 TRIPLE_EXPONENTIAL_MOVING_AVERAGE() 与 GROUP BY time() 子句,请参见 高级语法。
基本语法
TRIPLE_EXPONENTIAL_MOVING_AVERAGE([ * | <field_key> | /regular_expression/ ], <period>[, <hold_period)[, <warmup_type]])
TRIPLE_EXPONENTIAL_MOVING_AVERAGE(field_key, 2)
返回与字段键相关联的字段值,这些值是使用具有2值周期的三重指数移动平均算法处理的,采用默认的保持周期和预热类型。
TRIPLE_EXPONENTIAL_MOVING_AVERAGE(field_key, 10, 9, 'exponential')
返回与字段 ключ关联的字段值,使用三重指数移动平均算法处理,周期为10值,保持期为9值,采用exponential预热类型。
TRIPLE_EXPONENTIAL_MOVING_AVERAGE(MEAN(<field_key>), 2) ... GROUP BY time(1d)
返回与field key相关联的字段值的平均值,使用周期为2的三重指数移动平均算法处理,并使用默认的保持周期和热身类型。
注意: 在使用 GROUP BY 子句聚合数据时,您必须在调用 TRIPLE_EXPONENTIAL_MOVING_AVERAGE() 函数时包含一个 聚合函数。
TRIPLE_EXPONENTIAL_MOVING_AVERAGE(/regular_expression/, 2)
返回与每个字段键关联的字段值,这些字段键匹配正则表达式,使用带有2个值周期的三重指数移动平均算法处理,并使用默认的保持周期和预热类型。
TRIPLE_EXPONENTIAL_MOVING_AVERAGE(*, 2)
返回与每个字段键相关联的字段值,在measurement中,使用具有2值周期的三重指数移动平均算法处理,并使用默认的保持周期和预热类型。
TRIPLE_EXPONENTIAL_MOVING_AVERAGE() 支持 int64 和 float64 字段值 数据类型。
参数:
- 周期
- (可选) hold_period
- (可选) warmup_type
三重指数导数()
三重指数导数指标,通常称为“TRIX”,是一种用于识别超卖和超买市场的振荡器,也可作为动量指标。 TRIX计算数据输入在一段时间内的三重指数移动平均的对数。从前一个值中减去前一个值。这防止短于定义周期的周期被指标考虑。
像许多振荡器一样,TRIX 在零线上上下波动。当作为振荡器使用时,正值表示超买市场,而负值表示超卖市场。作为动量指标时,正值表明动量在增加,而负值表明动量在减少。许多分析师认为,当 TRIX 穿越零线上方时,发出买入信号,而当其收盘低于零线时,发出卖出信号。来源
支持 GROUP BY 子句来 按标签分组,但不支持 GROUP BY 子句来 按时间分组。要在 GROUP BY time() 子句中使用 TRIPLE_EXPONENTIAL_DERIVATIVE(),请参见 高级语法。
基本语法
TRIPLE_EXPONENTIAL_DERIVATIVE([ * | <field_key> | /regular_expression/ ], <period>[, <hold_period)[, <warmup_type]])
TRIPLE_EXPONENTIAL_DERIVATIVE(field_key, 2)
返回与字段键相关联的字段值,这些值是使用具有2个值周期的三重指数导数算法处理的,并且采用默认的保持期和预热类型。
TRIPLE_EXPONENTIAL_DERIVATIVE(field_key, 10, 10, 'exponential')
返回与字段键关联的字段值,这些值使用三重指数导数算法处理,周期为10值,保持期为10值,预热类型为exponential。
TRIPLE_EXPONENTIAL_DERIVATIVE(MEAN(<field_key>), 2) ... GROUP BY time(1d)
返回与field key相关联的字段值的均值,使用带有2个值周期的三重指数导数算法处理,采用默认的保持周期和预热类型。
注意: 当使用 GROUP BY 子句聚合数据时,您必须在调用 TRIPLE_EXPONENTIAL_DERIVATIVE() 函数时包含一个 聚合函数。
TRIPLE_EXPONENTIAL_DERIVATIVE(/regular_expression/, 2)
返回与每个匹配正则表达式的字段键关联的字段值,这些字段值是使用具有2值周期的三重指数导数算法处理的,以及默认的保持周期和预热类型。
TRIPLE_EXPONENTIAL_DERIVATIVE(*, 2)
返回与每个字段键关联的字段值,在measurement中处理,使用2值周期的三重指数导数算法以及默认的保持周期和预热类型。
TRIPLE_EXPONENTIAL_DERIVATIVE() 支持 int64 和 float64 字段值 数据类型。
相对强弱指数()
相对强弱指数(RSI)是一种动量指标,它比较在指定时间段内最近上涨和下跌的幅度,以衡量数据变化的速度和变化。
支持 GROUP BY 子句,按 标签分组,但不支持 GROUP BY 子句,按 时间分组。
要使用 RELATIVE_STRENGTH_INDEX() 与 GROUP BY time() 子句,请参见 高级语法。
基本语法
RELATIVE_STRENGTH_INDEX([ * | <field_key> | /regular_expression/ ], <period>[, <hold_period)[, <warmup_type]])
RELATIVE_STRENGTH_INDEX(field_key, 2)
返回与field key相关联的字段值,使用相对强弱指数算法处理,周期为2的值,默认保持周期和热身类型。
RELATIVE_STRENGTH_INDEX(field_key, 10, 10, 'exponential')
返回与字段键相关联的字段值,这些值使用相对强度指数算法处理,周期为10值,持有期为10值,以及exponential热身类型。
RELATIVE_STRENGTH_INDEX(MEAN(<field_key>), 2) ... GROUP BY time(1d)
返回与field key相关联的字段值的均值,使用相对强弱指数算法处理,周期为2个值,默认保持周期和预热类型。
注意: 当使用 GROUP BY 子句汇总数据时,您必须在对 RELATIVE_STRENGTH_INDEX() 函数的调用中包含一个 聚合函数。
RELATIVE_STRENGTH_INDEX(/regular_expression/, 2)
返回与每个字段键相关联的字段值,该字段键与正则表达式匹配,使用相对强弱指数算法处理,周期为2,采用默认的保持周期和热身类型。
RELATIVE_STRENGTH_INDEX(*, 2)
返回与每个字段键相关联的字段值,在measurement中使用相对强弱指数算法处理,周期为2的值,以及默认的持有时间和预热类型。
RELATIVE_STRENGTH_INDEX() 支持 int64 和 float64 字段值 数据类型。
参数:
- 周期
- (可选) hold_period
- (可选) warmup_type


