技术分析函数

技术分析的函数将广泛使用的算法应用在您的数据中。虽然这些函数主要应用在金融和投资领域,但是它们也适用于其它行业和用例。本文档主要介绍了技术分析函数的语法结构、语法说明以及使用示例。

通用参数说明

除了field key参数,技术分析函数还提供以下参数:

  • PERIOD

    必选参数,整数类型,min=1。算法的样本大小。这基本上是对算法的输出有显著影响的历史样本的数量。例如,2表示当前的数据点和前一个数据点。算法使用指数衰减率来决定历史数据点的权重,通常称为alpha(α)。参数PERIOD控制衰减率。请注意,历史数据点仍然可以产生影响。

  • HOLD_PERIOD

    整数类型,min=-1。算法需要多少个样本才会开始发送结果。默认值-1表示该参数的值基于算法、PERIODWARMUP_TYPE,但是这是一个可以使算法发送有意义的结果的值。

    默认的Hold Periods:对于大多数提供的技术分析,HOLD_PERIOD的默认值由您使用的技术分析算法和WARMUP_TYPE决定。

    算法 \ Warmup Type

    simple

    exponential

    none

    EXPONENTIAL_MOVING_AVERAGE

    PERIOD - 1

    PERIOD - 1

    n/a

    DOUBLE_EXPONENTIAL_MOVING_AVERAGE

    ( PERIOD - 1 ) * 2

    PERIOD - 1

    n/a

    TRIPLE_EXPONENTIAL_MOVING_AVERAGE

    ( PERIOD - 1 ) * 3

    PERIOD - 1

    n/a

    TRIPLE_EXPONENTIAL_DERIVATIVE

    ( PERIOD - 1 ) * 3 + 1

    PERIOD

    n/a

    RELATIVE_STRENGTH_INDEX

    PERIOD

    PERIOD

    n/a

    CHANDE_MOMENTUM_OSCILLATOR

    PERIOD

    PERIOD

    PERIOD - 1

    Kaufman算法默认的Hold Periods:

    算法

    默认的Hold Period

    KAUFMANS_EFFICIENCY_RATIO()

    PERIOD

    KAUFMANS_ADAPTIVE_MOVING_AVERAGE()

    PERIOD

  • WARMUP_TYPE

    默认值为exponential。这个参数控制算法如何为第一个PERIOD样本初始化自身,它本质上是具有不完整样本集的持续时间。

    simple第一个PERIOD样本的简单移动平均值(simple moving average,SMA)。这是ta-lib使用的方法。

    exponential具有缩放alpha(α)的指数移动平均值(exponential moving average,EMA)。基本上是这样使用EMA:PERIOD=1用于第一个点,PERIOD=2用于第二个点,以此类推,直至算法已经消耗了PERIOD个数据点。由于算法一开始就使用了EMA,当使用此方法并且没有指定HOLD_PERIOD的值或HOLD_PERIOD的值为-1时,算法可能会在比simple小得多的样本大小的情况下开始发送数据点。

    none算法不执行任何的平滑操作。这是ta-lib使用的方法。当使用此方法并且没有指定HOLD_PERIOD时,HOLD_PERIOD的默认值是PERIOD - 1

    说明

    类型none仅适用于CHANDE_MOMENTUM_OSCILLATOR()函数。

CHANDE_MOMENTUM_OSCILLATOR()

Chande Momentum Oscillator (CMO)是由Tushar Chande开发的一个技术动量指标。通过计算所有最近较高数据点的总和与所有最近较低数据点的总和的差值,然后将结果除以给定时间范围内的所有数据变动的总和来创建CMO指标。将结果乘以100可以得到一个从-100到+100的范围。

基本语法

CHANDE_MOMENTUM_OSCILLATOR([*|<field_key>|/regular_expression/],<period>[,<hold_period>,[warmup_type]])

可用的参数

period,hold_period(可选)warmup_type(可选)

基本语法描述

CHANDE_MOMENTUM_OSCILLATOR(field_key, 2)返回使用CMO算法处理field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

CHANDE_MOMENTUM_OSCILLATOR(field_key, 10, 9, 'none')返回使用CMO算法处理field key对应的field value后的结果,该算法中,period设为10,hold period设为9,warmup type设为none

CHANDE_MOMENTUM_OSCILLATOR(MEAN(<field_key>), 2) ... GROUP BY time(1d)返回使用CMO算法处理field key对应的field value平均值后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

说明

注释:当使用GROUP BY子句将数据进行聚合时,您必须在CHANDE_MOMENTUM_OSCILLATOR()函数中调用聚合函数。

CHANDE_MOMENTUM_OSCILLATOR(/regular_expression/, 2)返回使用CMO算法处理与正则表达式匹配的每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

CHANDE_MOMENTUM_OSCILLATOR(*, 2)返回使用CMO算法处理measurement中每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

CHANDE_MOMENTUM_OSCILLATOR()支持数据类型为int64和float64的field value。

EXPONENTIAL_MOVING_AVERAGE()

指数移动平均值 (Exponential Moving Average,EMA)类似于简单移动平均值,不同的是,指数移动平均值对最新数据给予更多的权重,它也被称为”指数加权移动平均值”。与简单移动平均值相比,这种类型的移动平均值对最近数据的变化反应更快。

基本语法

EXPONENTIAL_MOVING_AVERAGE([*|<field_key>|/regular_expression/],<period>[,<hold_period)[,<warmup_type]])

可用的参数

period,hold_period(可选)warmup_type(可选)

基本语法描述

EXPONENTIAL_MOVING_AVERAGE(field_key, 2)返回使用EMA算法处理field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

EXPONENTIAL_MOVING_AVERAGE(field_key, 10, 9, 'exponential')返回使用EMA算法处理field key对应的field value后的结果,该算法中,period设为10,hold period设为9,warmup type设为exponential

EXPONENTIAL_MOVING_AVERAGE(MEAN(<field_key>), 2) ... GROUP BY time(1d)返回使用EMA算法处理field key对应的field value平均值后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

说明

注释:当使用GROUP BY子句将数据进行聚合时,您必须在EXPONENTIAL_MOVING_AVERAGE()函数中调用聚合函数。

EXPONENTIAL_MOVING_AVERAGE(/regular_expression/, 2)返回使用EMA算法处理与正则表达式匹配的每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

EXPONENTIAL_MOVING_AVERAGE(*, 2)返回使用EMA算法处理measurement中每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

EXPONENTIAL_MOVING_AVERAGE()支持数据类型为int64和float64的field value。

DOUBLE_EXPONENTIAL_MOVING_AVERAGE()

双重指数移动平均值 (Double Exponential Moving Average,DEMA)通过增加最近数据的权重,尝试消除与移动平均值相关的固有滞后。该名字似乎表明这是通过双重指数平滑来实现的,然而事实并非如此,它表示的是将EMA的值翻倍。为了使它与实际数据保持一致,也为了消除滞后,从之前两倍EMA的值中把”EMA of EMA”的值减去,公式为:DEMA = 2 * EMA - EMA(EMA)。

基本语法

DOUBLE_EXPONENTIAL_MOVING_AVERAGE([*|<field_key>|/regular_expression/],<period>[,<hold_period)[,<warmup_type]])

可用的参数

period,hold_period(可选),warmup_type(可选)

基本语法描述

DOUBLE_EXPONENTIAL_MOVING_AVERAGE(field_key, 2)返回使用DEMA算法处理field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

DOUBLE_EXPONENTIAL_MOVING_AVERAGE(field_key, 10, 9, 'exponential')返回使用DEMA算法处理field key对应的field value后的结果,该算法中,period设为10,hold period设为9,warmup type设为exponential

DOUBLE_EXPONENTIAL_MOVING_AVERAGE(MEAN(<field_key>), 2) ... GROUP BY time(1d)返回使用DEMA算法处理field key对应的field value平均值后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

说明

注释:当使用GROUP BY子句将数据进行聚合时,您必须在DOUBLE_EXPONENTIAL_MOVING_AVERAGE()函数中调用聚合函数。

DOUBLE_EXPONENTIAL_MOVING_AVERAGE(/regular_expression/, 2)返回使用DEMA算法处理与正则表达式匹配的每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

DOUBLE_EXPONENTIAL_MOVING_AVERAGE(*, 2)返回使用DEMA算法处理measurement中每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

DOUBLE_EXPONENTIAL_MOVING_AVERAGE()支持数据类型为int64和float64的field value。

KAUFMANS_EFFICIENCY_RATIO()

Kaufman效率比 (Kaufman’s Efficiency Ration),或简称为效率比 (Efficiency Ratio,ER),它的计算方法是:将一段时间内的数据变化除以实现该变化所发生的数据变动的绝对值的总和。得出的比率在0和1之间,比率越高,表示市场越有效率或越有趋势。

ER跟Chande Momentum Oscillator (CMO)非常类似。不同的是,CMO将市场方向考虑在内,但是如果您将CMO的绝对值除以100,就可以得到ER。

基本语法

KAUFMANS_EFFICIENCY_RATIO([*|<field_key>|/regular_expression/],<period>[,<hold_period>])

可用的参数

period,hold_period (可选)

基本语法描述

KAUFMANS_EFFICIENCY_RATIO(field_key, 2)返回使用效率指数(Efficiency Index)算法处理field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period。

KAUFMANS_EFFICIENCY_RATIO(field_key, 10, 10)返回使用效率指数算法处理field key对应的field value后的结果,该算法中,period设为10,hold period设为10。

KAUFMANS_EFFICIENCY_RATIO(MEAN(<field_key>), 2) ... GROUP BY time(1d)返回使用效率指数算法处理field key对应的field value平均值后的结果,该算法中,period设为2,使用默认的hold period。

说明

注释:当使用GROUP BY子句将数据进行聚合时,您必须在KAUFMANS_EFFICIENCY_RATIO()函数中调用聚合函数。

KAUFMANS_EFFICIENCY_RATIO(/regular_expression/, 2)返回使用效率指数算法处理与正则表达式匹配的每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period。

KAUFMANS_EFFICIENCY_RATIO(*, 2)返回使用效率指数算法处理measurement中每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period。

KAUFMANS_EFFICIENCY_RATIO()支持数据类型为int64和float64的field value。

KAUFMANS_ADAPTIVE_MOVING_AVERAGE()

Kaufman自适应移动平均值 (Kaufman’s Adaptive Moving Average,KAMA),是一个用于计算样本噪音或波动率的移动平均值。当数据波动相对较小并且噪音较低时,KAMA会密切关注数据点。当数据波动较大时,KAMA会进行调整,平滑噪音。该趋势跟踪指标可用于识别总体趋势、时间转折点和过滤价格变动。

基本语法

KAUFMANS_ADAPTIVE_MOVING_AVERAGE([*|<field_key>|/regular_expression/],<period>[,<hold_period>])

可用的参数

period,hold_period(可选),warmup_type(可选)

基本语法描述

KAUFMANS_ADAPTIVE_MOVING_AVERAGE(field_key, 2)返回使用KAMA算法处理field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period。

KAUFMANS_ADAPTIVE_MOVING_AVERAGE(field_key, 10, 10)返回使用KAMA算法处理field key对应的field value后的结果,该算法中,period设为10,hold period设为10。

KAUFMANS_ADAPTIVE_MOVING_AVERAGE(MEAN(<field_key>), 2) ... GROUP BY time(1d)返回使用KAMA算法处理field key对应的field value平均值后的结果,该算法中,period设为2,使用默认的hold period。

说明

注释:当使用GROUP BY子句将数据进行聚合时,您必须在KAUFMANS_ADAPTIVE_MOVING_AVERAGE()函数中调用聚合函数。

KAUFMANS_ADAPTIVE_MOVING_AVERAGE(/regular_expression/, 2)返回使用KAMA算法处理与正则表达式匹配的每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period。

KAUFMANS_ADAPTIVE_MOVING_AVERAGE(*, 2)返回使用KAMA算法处理measurement中每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period。

KAUFMANS_ADAPTIVE_MOVING_AVERAGE()支持数据类型为int64和float64的field value。

TRIPLE_EXPONENTIAL_MOVING_AVERAGEE()

三重指数移动平均值 (Triple Exponential Moving Average,TEMA),旨在过滤常规移动平均值的波动。该名字似乎表明这是通过三重指数平滑来实现的,然而事实并非如此,它实际上是包含指数移动平均值、双重指数移动平均值和三重指数移动平均值的复合函数。

基本语法

TRIPLE_EXPONENTIAL_MOVING_AVERAGE([*|<field_key>|/regular_expression/],<period>[,<hold_period)[,<warmup_type]])

可用的参数

period,hold_period (可选),warmup_type(可选)

基本语法描述

TRIPLE_EXPONENTIAL_MOVING_AVERAGE(field_key, 2)返回使用TEMA算法处理field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

TRIPLE_EXPONENTIAL_MOVING_AVERAGE(field_key, 10, 9, 'exponential')返回使用TEMA算法处理field key对应的field value后的结果,该算法中,period设为10,hold period设为9,warmup type设为exponential

TRIPLE_EXPONENTIAL_MOVING_AVERAGE(MEAN(<field_key>), 2) ... GROUP BY time(1d)返回使用TEMA算法处理field key对应的field value平均值后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

说明

注释:当使用GROUP BY子句将数据进行聚合时,您必须在TRIPLE_EXPONENTIAL_MOVING_AVERAGE()函数中调用聚合函数。

TRIPLE_EXPONENTIAL_MOVING_AVERAGE(/regular_expression/, 2)返回使用TEMA算法处理与正则表达式匹配的每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

TRIPLE_EXPONENTIAL_MOVING_AVERAGE(*, 2)返回使用TEMA算法处理measurement中每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

TRIPLE_EXPONENTIAL_MOVING_AVERAGE()支持数据类型为int64和float64的field value。

TRIPLE_EXPONENTIAL_DERIVATIVE()

三重指数导数指标 (Triple Exponential Derivative Indicator),通常称为”TRIX”,是一种用于识别超卖和超买市场的振荡器,也可用作动量指标。TRIX计算一段时间内输入数据的对数的三重指数移动平均值。从当前的值中减去之前的值,这可以防止指标考虑比规定期间短的周期。

跟很多振荡器一样,TRIX围绕着零线震荡。当它用作振荡器时,正数表示炒买超买市场,而负数表示超卖市场。当它用作动量指标时,正数表示动量在增加,而负数表示动量在减少。很多分析师认为,当TRIX超过零线时,它会给出买入信号,当低于零线时,它会给出卖出信号。

基本语法

TRIPLE_EXPONENTIAL_DERIVATIVE([*|<field_key>|/regular_expression/],<period>[,<hold_period)[,<warmup_type]])

可用的参数

period,hold_period(可选),warmup_type(可选)

基本语法描述

TRIPLE_EXPONENTIAL_DERIVATIVE(field_key, 2)返回使用三重指数导数算法处理field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

TRIPLE_EXPONENTIAL_DERIVATIVE(field_key, 10, 10, 'exponential')返回使用三重指数导数算法处理field key对应的field value后的结果,该算法中,period设为10,hold period设为10,warmup type设为exponential

TRIPLE_EXPONENTIAL_DERIVATIVE(MEAN(<field_key>), 2) ... GROUP BY time(1d)返回使用三重指数导数算法处理field key对应的field value平均值后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

说明

注释:当使用GROUP BY子句将数据进行聚合时,您必须在TRIPLE_EXPONENTIAL_DERIVATIVE()函数中调用聚合函数。

TRIPLE_EXPONENTIAL_DERIVATIVE(/regular_expression/, 2)返回使用三重指数导数算法处理与正则表达式匹配的每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

TRIPLE_EXPONENTIAL_DERIVATIVE(*, 2)返回使用三重指数导数算法处理measurement中每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

TRIPLE_EXPONENTIAL_DERIVATIVE()支持数据类型为int64和float64的field value。

RELATIVE_STRENGTH_INDEX()

相对强弱指数 (Relative Strength Index,RSI)是一个动量指标,用于比较在指定时间段内最近数据增大和减小的幅度,以便测量数据变动的速度和变化。

基本语法

RELATIVE_STRENGTH_INDEX([*|<field_key>|/regular_expression/],<period>[,<hold_period)[,<warmup_type]])

可用的参数

period,hold_period(可选),warmup_type(可选)

基本语法描述

RELATIVE_STRENGTH_INDEX(field_key, 2)返回使用RSI算法处理field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

RELATIVE_STRENGTH_INDEX(field_key, 10, 10, 'exponential')返回使用RSI算法处理field key对应的field value后的结果,该算法中,period设为10,hold period设为10,warmup type设为exponential

RELATIVE_STRENGTH_INDEX(MEAN(<field_key>), 2) ... GROUP BY time(1d)返回使用RSI算法处理field key对应的field value平均值后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

说明

注释:当使用GROUP BY子句将数据进行聚合时,您必须在RELATIVE_STRENGTH_INDEX()函数中调用聚合函数。

RELATIVE_STRENGTH_INDEX(/regular_expression/, 2)返回使用RSI算法处理与正则表达式匹配的每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

RELATIVE_STRENGTH_INDEX(*, 2)返回使用RSI算法处理measurement中每个field key对应的field value后的结果,该算法中,period设为2,使用默认的hold period和warmup type。

RELATIVE_STRENGTH_INDEX()支持数据类型为int64和float64的field value。