doubleEMA() function

Flux 0.38.0+

The doubleEMA() function calculates the exponential moving average of values in the _value column grouped into n number of points, giving more weight to recent data at double the rate of exponentialMovingAverage().

doubleEMA(n: 5)
Double exponential moving average rules
  • A double exponential moving average is defined as doubleEMA = 2 * EMA_N - EMA of EMA_N.
    • EMA is an exponential moving average.
    • N = n is the period used to calculate the EMA.
  • A true double exponential moving average requires at least 2 * n - 1 values. If not enough values exist to calculate the double EMA, it returns a NaN value.
  • doubleEMA() inherits all exponential moving average rules.



Number of points to average.


Input data. Default is piped-forward data (<-).


The following example uses data provided by the sampledata package to show how doubleEMA() transforms data.

Calculate a three point double exponential moving average

import "sampledata"
  |> doubleEMA(n: 3)

View input and output

Function definition

doubleEMA = (n, tables=<-) =>
    |> exponentialMovingAverage(n:n)
    |> duplicate(column:"_value", as:"ema")
    |> exponentialMovingAverage(n:n)
    |> map(fn: (r) => ({r with _value: 2.0 * r.ema - r._value}))
    |> drop(columns: ["ema"])

Upgrade to InfluxDB Cloud or InfluxDB 2.0!

InfluxDB Cloud and InfluxDB OSS 2.0 ready for production.