Volumatic VIDYA: 180 symbol and timeframe scans from one chart, zero buffers
An adaptive-trend scanner that watches up to 180 symbol and timeframe combinations at once and outputs tradeable levels, built to cost nothing on a quiet tick.
20 symbols x 9 timeframes · entry, stop and target per row · zero indicator buffers, zero plots · 41 identical inputs on MT4 and MT5 · sold on the MQL5 Market
From the delivered sources and the v2 support cycle


The problem
A discretionary trader watching 20 instruments across 9 timeframes is doing 180 chart checks to answer one question: where is something setting up right now? By the time the watchlist has been cycled, the first chart has moved. The obvious fix, an indicator on 180 charts, collapses under its own weight: terminal CPU, buffer limits, and no single place to look.
What was built
A single indicator, attached once, that runs a full independent trend-and-signal calculation for every symbol and timeframe pair in its list and presents the results as one sortable, scrollable table, with entry, stop-loss and take-profit levels rather than just a direction arrow. At default settings the geometry is a fixed 2:1 reward-to-risk. It ships commercially on the MQL5 Market as parallel MT4 and MT5 products, which means the code passed MetaQuotes validation for both platforms.
The engine: an average that adapts itself
The core is a VIDYA (Variable Index Dynamic Average) weighted by the Chande Momentum Oscillator. In a strong directional move the oscillator approaches 100, so the smoothing constant approaches full alpha and the line tracks price like a fast EMA. In chop the oscillator collapses toward zero, the constant goes with it, and the line effectively freezes, which is exactly the behaviour wanted from a trend rail.
absCMO = |100 * (sumPos - sumNeg) / (sumPos + sumNeg)| alpha = 2 / (length + 1) sc = alpha * absCMO / 100 vidya = sc * close + (1 - sc) * prevVidya
A manually computed ATR generates three symmetric band pairs around the line, entry, stop and target. A latching state machine flips trend when price closes beyond the entry band, and the active rail switches to the opposite band, giving a VIDYA-driven trailing structure.
| Level | Derivation (defaults) |
|---|---|
| Entry band | VIDYA plus or minus ATR x 2.0 |
| Stop loss | Signal close against ATR x 2.0 |
| Take profit | Signal close plus ATR x 4.0, a 2:1 reward-to-risk |
Signal confirmation requires two bars: the prior bar must have touched the rail within a proportional tolerance, and the signal bar must close in the signal's direction with the trend agreeing. The detection loop starts at bar index 1, so the forming bar is structurally excluded and can never produce a signal that later vanishes.
Making 180 scans cost nothing
The interesting engineering problem is not the maths; it is running it 180 times on a live terminal without degrading it. The main loop visits all 180 pairs on every tick, but each pair's heavy pipeline is gated behind a single timestamp comparison, so the calculation only runs on that pair's bar close. On a quiet tick the entire indicator costs 180 timestamp reads.
datetime barTime = iTime(sym, tf, 0); if(barTime == g_LastBarTime[s][t]) continue; // nothing new for this pair
The indicator declares zero buffers and zero plots. The entire interface (table, scrollbar, buttons, grid lines, arrows, labels, highlighted candles) is drawn with chart objects under one namespace, so it consumes none of the platform's buffer budget and coexists with anything else the trader runs.
- A real scrollbar, not a page counter: mouse-move, click, wheel and chart-change events, a proportionally sized thumb, and a two-phase drag that converts a global mouse Y into sub-window space by summing the heights of preceding chart windows.
- One-click chart teleport: each row's button switches the chart to that symbol and timeframe and redraws the arrow layer for the new context.
- A fully responsive layout: all eight column positions are percentages of live chart width, recalculated on resize.
- Broker-agnostic symbols: prefix and suffix inputs handle .raw, .ecn, m and similar naming conventions.
- Four alert channels with per-symbol, per-timeframe, per-direction de-duplication for one bar, and messages that carry the full entry, stop and target so they are actionable from a phone.
Supporting a real customer: the v2 fix cycle
After release a customer reported three issues with screenshots. All three were reproducible, diagnosed to root cause and fixed. This is the part of commercial work that separates a script from a product.
| Symptom | Root cause | Fix |
|---|---|---|
| Alert flood every time settings changed | The platform re-runs the historical pass, the signal cache resets, and every historical signal looks brand new. | Suppress alert dispatch during the historical pass only, while still populating the cache; re-arm on the next live tick. |
| On-chart label clipped at the right edge | A hard-coded 14pt font, horizontally centred on the signal bar. | A font-size input (clamped to a sane minimum) plus a switch to right-anchored text so labels grow leftward. |
| Chart column clipped for some brokers | The button was too narrow for suffixed symbol names such as USDJPY.Qraw (M15), and sat too close to the scrollbar. | Button widened and the column repositioned. |
A true dual-platform pair
The MT4 and MT5 builds carry the same 41 inputs, the same algorithm and the same eight columns, differing only where the APIs force it. MT5 copies price arrays and explicitly sets series indexing to reproduce MT4's newest-first convention, so one mental model covers both. A client running both platforms should not have to learn two products.
This is analytical software, not investment advice, and no indicator predicts future prices. The entry, stop and target levels it publishes are derived geometrically from volatility: a risk framework, not a forecast.
Chart captures are from the published MetaTrader build. This is analytical software, not investment advice; no indicator predicts future prices.
Need a scanner like this?
Tell me your instruments, timeframes and signal logic. I tell you honestly what it will cost in terminal performance before you order. Scanner dashboards start at $130 on Upwork.