Zero Lag Trend
- Indicators
-
Evgenii Sutulov
I build trading indicators, strategies, and dashboards that don't repaint.
Seven years doing this. MetaTrader 4, MetaTrader 5, TradingView.
Closed bars only. What you see is what happened.
The bar being formed never changes a published value. - Version: 1.3
An average without the lag, and a band that refuses to flip the trend on a quiet bar. Zero-Lag Trend MTF feeds the average price plus its own recent change, which removes most of the delay, then wraps it in a band whose width is the highest ATR of the recent past rather than the current one, so a lull cannot turn the trend around. The side changes only on a break of the band, never on a touch. It is free: no trial, no locked features, no upgrade page.
A zero lag average removes delay by feeding the average not the price itself but the price plus its change over half the window. Around that line a band is built whose width is a multiple of the highest ATR seen over three window lengths, and the highest rather than the current one on purpose: a band that forgets a recent spike would turn the trend over on every lull.
The side changes only when price crosses an edge of the band, never when it merely touches it. That single rule is what separates this from a zero lag average with a channel drawn on it, and it is why the product produces one signal per real break instead of one per approach.
What is on the chart
Drawn in the price window: the zero lag average coloured by its side and unbroken across the break, the two edges of the volatility band as thin lines, two shades between them, and BUY and SELL arrows on the bar where the band was broken.
The panel
A canvas panel on the price chart, draggable, collapsible, closeable. It shows the timeframe in force and the setting values actually being used. It says what the last closed bar was: a BUY signal, a SELL signal, or neither. And it says whether the numbers on screen came from the properties dialog or from the panel, and how many of them were changed by hand.
Below that sit the settings the panel can move, with their current values. The gear opens a three-tab sheet.
Values covers the timeframe, the length that sets both the average's window and the ATR behind the band, seventy by default, and the band multiplier of 1.2, which is measured in peak ATRs. Styles covers the palette, the line and its width, the arrow size, the band and the two shades. Every Values row has steppers, a range and a sentence of help.
The Alerts tab covers the master switch, the per event switches, the channels, the cooldown in minutes and a test alert.
Three colour schemes: dark, light, and a colour-blind safe one that uses blue and orange rather than red and green. Everything about the panel, including every value changed on the sheet, is stored per chart and survives a timeframe change and a terminal restart. The interface is English.
Alerts
Off out of the box. Three events: a BUY signal, a SELL signal, and a touch of the zero lag average, which is the pull back event rather than a flip. Each has a switch of its own.
Channels: a popup window, a sound, a push to the mobile terminal and e-mail. There are per-event and per-channel switches, and a cooldown that defaults to two hours.
Alerts fire on the last closed bar. Two further alerts, off by default, speak on the forming bar within a chosen number of seconds of its close, and they are labelled early because a flip that exists mid-bar can un-happen. Telegram is not part of this product.
Signals on the forming bar
There is one switch that matters more than the others, and it is in the Values tab as well as in the inputs: whether buffers and arrows are allowed on the bar that is still forming.
With it on, which is the shipped default, you see a flip as soon as the market makes it. Sometimes that flip is undone before the bar closes and the arrow disappears. With it off, nothing is written on the forming bar at all: there is no repaint of any kind, and every signal arrives one bar late by construction.
Both behaviours are legitimate. The product does not pick for you and it does not hide which one it is doing: the panel and the setting name both say so.
Multi-timeframe
The Timeframe setting computes on a higher timeframe and draws the result here. Only closed senior bars are read: a chart bar shows the newest senior bar that had already closed by that chart bar's own close, so the flip lands on the bar that closes together with the senior bar, and nothing is drawn that could not have been known in real time.
The foreign series is built in the background. The first read of it can come back empty, the indicator retries, and the panel says whether it is waiting for a download or looking at a genuine shortage of history. It never fails initialisation over missing bars.
Reading it from an EA
Sixteen buffers, all readable through iCustom and CopyBuffer. Buffer 0, Buy, carries the arrow price on a BUY bar and EMPTY_VALUE otherwise, and is not drawn; buffer 1, Sell, is the same for a SELL. Buffers 2 to 5 belong to the two fills and are display plumbing, not for reading. Buffer 6 is the zero lag average while the trend is up and buffer 7 is the same line while it is down; on the turning bar both hold a value, which is what keeps the drawn line unbroken. Buffer 8 is the upper edge of the volatility band and buffer 9 is its lower edge. Buffers 10 and 11 are the drawn copies of buffers 0 and 1. Buffer 12, Signal, is +1 on a BUY bar, -1 on a SELL bar and 0 otherwise. Buffer 13 is Override, buffer 14 is the zero lag average as one unbroken series, and buffer 15 is the trend itself, 0 while up and 1 while down.
Buffer 16 is added by this port and sits after the whole shared map: the ATR itself, which the engine needs and which is useful to read directly. No index of the shared contract moved.
Buffers 0 and 1 are the contract: never painted, filled on every pass whatever the Styles tab says, and present in the Data Window. Hiding the arrows on the display cannot starve a strategy of the signal, because hiding is done by changing how a plot is drawn and never by emptying a buffer.
An instance created by iCustom is read only and always uses the parameters you passed. The Override buffer lets a strategy detect that a chart instance is running on numbers changed by hand from the panel.
Provenance
This is a port of the Zero Lag Trend family. The zero lag average is public and is Ehlers and Ric's, and the presentation with a volatility band was reproduced from the formulas, which makes a port by formula admissible. Three deviations are declared: on the first bars the shifted close is unavailable and the oldest close is used instead, with the average seeded from its first value, the ATR warmed by a running mean and the peak window progressive, where Pine returns nothing; the original starts with a neutral side and only takes a sign on the first crossing, and since this line's layout has no neutral side the line is drawn as rising until that first crossing; and a buffer is added for the ATR itself.
The product is called Zero-Lag Trend MTF because that is the name of the method, not because authorship of the method is claimed here. The original work belongs to its author.
Honest limits
Removing lag amplifies noise. A zero lag average overshoots turns, and the band exists to stop that overshoot from becoming a signal, not to stop it happening.
The band remembers the highest recent ATR. After a violent bar the band stays wide for a while, and during that time it takes a larger move to change the side.
The length and the multiplier move every break the product will ever report. Two configurations produce two different sets of arrows and neither of them is the true one.
No profit figure, win rate or backtest result is claimed here.
