True Range

Technical Analysis Indicator: tr

Fork me on GitHub

Function Prototype

/* True Range */
/* Type: indicator */
/* Input arrays: 3    Options: 0    Output arrays: 1 */
/* Inputs: high, low, close */
/* Options: none */
/* Outputs: tr */
int ti_tr_start(TI_REAL const *options);
int ti_tr(int size,
      TI_REAL const *const *inputs,
      TI_REAL const *options,
      TI_REAL *const *outputs);

Description

This documentation is still a work in progress. It has omissions, and it probably has errors too. If you see any issues, or have any general feedback, please get in touch.

True range is a measure of volatility. It represents how much a security changed price on a given day.

True range for each day is the greatest of:

  • Day's high minus day's low
  • The absolute value of the day's high minus the previous day's close
  • The absolute value of the day's low minus the previous day's close
$$tr_{t} = maximum(high_{t} - low_{t}, |high_{t} - close_{t-1}|, |low_{t} - close_{t-1}|)$$

True Range is often used as Average True Range which is calculated by applying Wilders Smoothing to True Range.

See Also

References

Example Usage

Calling From C

/* Example usage of True Range */
/* Assuming that 'high', 'low', and 'close' are pre-loaded arrays of size 'in_size'. */
TI_REAL *inputs[] = {high, low, close};
TI_REAL options[] = {}; /* No options */
TI_REAL *outputs[1]; /* tr */

/* Determine how large the output size is for our options. */
const int out_size = in_size - ti_tr_start(options);

/* Allocate memory for output. */
outputs[0] = malloc(sizeof(TI_REAL) * out_size); assert(outputs[0] != 0); /* tr */

/* Run the actual calculation. */
const int ret = ti_tr(in_size, inputs, options, outputs);
assert(ret == TI_OKAY);

Calling From Lua (with Tulip Chart bindings)

-- Example usage of True Range
tr = ti.tr(high, low, close)

Example Calculation

datehighlowclosetr
2005-11-0182.1581.2981.590.86
2005-11-0281.8980.6481.061.25
2005-11-0383.0381.3182.871.97
2005-11-0483.3082.6583.000.65
2005-11-0783.8583.0783.610.85
2005-11-0883.9083.1183.150.79
2005-11-0983.3382.4982.840.84
2005-11-1084.3082.3083.992.00
2005-11-1184.8484.1584.550.85
2005-11-1485.0084.1184.360.89
2005-11-1585.9084.0385.531.87
2005-11-1686.5885.3986.541.19
2005-11-1786.9885.7686.891.22
2005-11-1888.0087.1787.771.11
2005-11-2187.8787.0187.290.86

Chart

 

Other Indicators

Previous indicator: Vector Radian Conversion

Next indicator: Triangular Moving Average

Random indicator: Vector Subtraction