# Wilders Smoothing

## Function Prototype

/* Wilders Smoothing */
/* Type: overlay */
/* Input arrays: 1    Options: 1    Output arrays: 1 */
/* Inputs: real */
/* Options: period */
/* Outputs: wilders */
int ti_wilders_start(TI_REAL const *options);
int ti_wilders(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.

Wilder's smoothing is a type of exponential moving average.

It takes one parameter, the period n, a positive integer. Larger values for n will have a greater smoothing effect on the input data but will also create more lag.

It is calculated with the following formula:

$$wilders_{t} = \frac{n-1}{n} wilders_{t-1} + \frac{1}{n} in_{t}$$

It is equivalent to a 2n-1 Exponential Moving Average. For example, a 10 period Wilder's smoothing is the same as a 19 period exponential moving average.

The calculation is initialized by calculated the mean of the first n bars.

## Example Usage

### Calling From C

/* Example usage of Wilders Smoothing */
/* Assuming that 'input' is a pre-loaded array of size 'in_size'. */
TI_REAL *inputs[] = {input};
TI_REAL options[] = {5}; /* period */
TI_REAL *outputs[1]; /* wilders */

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

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

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

### Calling From Lua (with Tulip Chart bindings)

-- Example usage of Wilders Smoothing
wilders = ti.wilders(input, 5)

## Example Calculation

period = 5

dateinputwilders
2005-11-0181.59
2005-11-0281.06
2005-11-0382.87
2005-11-0483.00
2005-11-0783.6182.43
2005-11-0883.1582.57
2005-11-0982.8482.63
2005-11-1083.9982.90
2005-11-1184.5583.23
2005-11-1484.3683.46
2005-11-1585.5383.87
2005-11-1686.5484.40
2005-11-1786.8984.90
2005-11-1887.7785.48
2005-11-2187.2985.84

## Other Indicators

Previous indicator: Weighted Close Price

Next indicator: Williams %R

Random indicator: Lag