## 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:

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.

## See Also

## References

- Wilder, J. Welles (1978) New Concepts in Technical Trading Systems
- Achelis, S. (2000) Technical Analysis from A to Z, 2nd Edition
- Wikipedia: Exponential moving average

## 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

date | input | wilders |
---|---|---|

2005-11-01 | 81.59 | |

2005-11-02 | 81.06 | |

2005-11-03 | 82.87 | |

2005-11-04 | 83.00 | |

2005-11-07 | 83.61 | 82.43 |

2005-11-08 | 83.15 | 82.57 |

2005-11-09 | 82.84 | 82.63 |

2005-11-10 | 83.99 | 82.90 |

2005-11-11 | 84.55 | 83.23 |

2005-11-14 | 84.36 | 83.46 |

2005-11-15 | 85.53 | 83.87 |

2005-11-16 | 86.54 | 84.40 |

2005-11-17 | 86.89 | 84.90 |

2005-11-18 | 87.77 | 85.48 |

2005-11-21 | 87.29 | 85.84 |

## Chart

## Other Indicators

Previous indicator: Weighted Close Price

Next indicator: Williams %R

Random indicator: Average Directional Movement Index