 
Function Prototype
/* Zero-Lag Exponential Moving Average */
/* Type: overlay */
/* Input arrays: 1    Options: 1    Output arrays: 1 */
/* Inputs: real */
/* Options: period */
/* Outputs: zlema */
int ti_zlema_start(TI_REAL const *options);
int ti_zlema(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.
Zero-Lag Exponential Moving Average modifies a Exponential Moving Average to greatly reduce lag.
It takes one parameter, the period n.
It is calculated for each bar as follows:
$$a = \frac{2}{n+1}$$
$$zlema_{t} = (1-a)zlema_{t-1} + (a)(in_{t} + (in_{t}-in_{t-(\frac{n-1}{2})}))$$
See Also
References
- Wikipedia: Zero Lag Exponential Moving Average
- Stocks & Commodities V. 28:11 (30-35): Zero Lag (Well, Almost) by John Ehlers and Ric Way
- Wikipedia: Exponential Smoothing
Example Usage
Calling From C
/* Example usage of Zero-Lag Exponential Moving Average */
/* 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]; /* zlema */
/* Determine how large the output size is for our options. */
const int out_size = in_size - ti_zlema_start(options);
/* Allocate memory for output. */
outputs[0] = malloc(sizeof(TI_REAL) * out_size); assert(outputs[0] != 0); /* zlema */
/* Run the actual calculation. */
const int ret = ti_zlema(in_size, inputs, options, outputs);
assert(ret == TI_OKAY);
Calling From Lua (with Tulip Chart bindings)
-- Example usage of Zero-Lag Exponential Moving Average
zlema = ti.zlema(input, 5)
Example Calculation
period = 5
| date | input | zlema | 
|---|---|---|
| 2005-11-01 | 81.59 | |
| 2005-11-02 | 81.06 | 81.06 | 
| 2005-11-03 | 82.87 | 82.09 | 
| 2005-11-04 | 83.00 | 83.04 | 
| 2005-11-07 | 83.61 | 83.48 | 
| 2005-11-08 | 83.15 | 83.42 | 
| 2005-11-09 | 82.84 | 82.97 | 
| 2005-11-10 | 83.99 | 83.59 | 
| 2005-11-11 | 84.55 | 84.48 | 
| 2005-11-14 | 84.36 | 84.56 | 
| 2005-11-15 | 85.53 | 85.21 | 
| 2005-11-16 | 86.54 | 86.38 | 
| 2005-11-17 | 86.89 | 87.00 | 
| 2005-11-18 | 87.77 | 87.67 | 
| 2005-11-21 | 87.29 | 87.68 | 
Chart
Other Indicators
Previous indicator: Weighted Moving Average
Random indicator: Vector Tangent
Copyright © 2016-2025 Tulip Charts LLC. All Rights Reserved.
    