Back to Influxdb

relativeStrengthIndex() function

content/flux/v0/stdlib/universe/relativestrengthindex.md

latest3.3 KB
Original Source
<!------------------------------------------------------------------------------ IMPORTANT: This page was generated from comments in the Flux source code. Any edits made directly to this page will be overwritten the next time the documentation is generated. To make updates to this documentation, update the function comments above the function definition in the Flux source code: https://github.com/influxdata/flux/blob/master/stdlib/universe/universe.flux#L2236-L2239 Contributing to Flux: https://github.com/influxdata/flux#contributing Fluxdoc syntax: https://github.com/influxdata/flux/blob/master/docs/fluxdoc.md ------------------------------------------------------------------------------->

relativeStrengthIndex() measures the relative speed and change of values in input tables.

Relative strength index (RSI) rules

  • The general equation for calculating a relative strength index (RSI) is RSI = 100 - (100 / (1 + (AVG GAIN / AVG LOSS))).
  • For the first value of the RSI, AVG GAIN and AVG LOSS are averages of the n period.
  • For subsequent calculations:
    • AVG GAIN = ((PREVIOUS AVG GAIN) * (n - 1)) / n
    • AVG LOSS = ((PREVIOUS AVG LOSS) * (n - 1)) / n
  • relativeStrengthIndex() ignores null values.

Output tables

For each input table with x rows, relativeStrengthIndex() outputs a table with x - n rows.

Function type signature
js
(<-tables: stream[A], n: int, ?columns: [string]) => stream[B] where A: Record, B: Record

{{% caption %}} For more information, see Function type signatures. {{% /caption %}}

Parameters

n

({{< req >}}) Number of values to use to calculate the RSI.

columns

Columns to operate on. Default is ["_value"].

tables

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

Examples

Calculate a three point relative strength index

js
import "sampledata"

sampledata.int()
    |> relativeStrengthIndex(n: 3)

{{< expand-wrapper >}} {{% expand "View example input and output" %}}

Input data

_time_value*tag
2021-01-01T00:00:00Z-2t1
2021-01-01T00:00:10Z10t1
2021-01-01T00:00:20Z7t1
2021-01-01T00:00:30Z17t1
2021-01-01T00:00:40Z15t1
2021-01-01T00:00:50Z4t1
_time_value*tag
2021-01-01T00:00:00Z19t2
2021-01-01T00:00:10Z4t2
2021-01-01T00:00:20Z-3t2
2021-01-01T00:00:30Z19t2
2021-01-01T00:00:40Z13t2
2021-01-01T00:00:50Z1t2

Output data

_time_value*tag
2021-01-01T00:00:30Z84.375t1
2021-01-01T00:00:40Z73.97260273972603t1
2021-01-01T00:00:50Z36.672325976230894t1
_time_value*tag
2021-01-01T00:00:30Z70.27027027027026t2
2021-01-01T00:00:40Z59.42857142857142t2
2021-01-01T00:00:50Z40.625t2

{{% /expand %}} {{< /expand-wrapper >}}