OFS ConfirmedAbsorption
Absorption that earned its line. Aggressive volume is only a candidate; a level appears after price rejects the zone and closes away from it. Tick-precise, non-repainting, adaptive and built for readable charts.
| Current version | 1.1.4 · 2026-09-10 |
| Compatibility | ATAS and ATAS X with .NET 10 runtime |
| Requirements | Windows 10/11, .NET 10, ATAS or ATAS X with a data feed that provides Bid/Ask classified volume (footprint data) - and nothing else. |
| Updates | All future updates included |
| Delivery | ATAS catalog (automatic) + download in your account |
Description
Every footprint trader has seen it: a huge volume prints at the low, someone calls it absorption, and price sails straight through it. A big number alone is not absorption. Absorption is effort that failed: aggressive traders hit one side of the book, passive liquidity accepts that pressure, and price cannot continue. The proof is not the volume alone. The proof is the rejection.
OFS ConfirmedAbsorption examines every real tick level of a closed footprint candle. It checks the aggressive executed volume, the opposite-side volume one tick diagonally beyond it, their ratio, contiguous stacked levels and the location inside the candle. Wicks Only is the default because reversal absorption normally belongs at the extreme; Body Only and All remain available for research. A qualified print is still only a candidate. It becomes a confirmed level only when the candle closes away from the entire zone by the configured distance. No confirming close means no historical line.
Each confirmed tick is drawn as one horizontal line at one fixed price. The price never moves. While the market is far away the line stays short; as price approaches, it extends smoothly towards the current bar. The first return freezes the visible line at the touch bar, while the level underneath continues through its documented lifecycle. A touch starts a reaction window. If price moves away by the configured reaction distance, the level becomes USED and fades - a little more after every further use. It must then move far enough away to rearm before another touch can count. Repeated tests are tracked until the touch limit retires the level. A close through the zone marks it BROKEN; broken levels remain briefly visible for the selected number of bars. Old levels expire by session age. A small control panel toggles the absorptions and extends the untouched long or short levels to the current bar with one click.
Closed-bar detections never repaint. The optional live preview is clearly dotted and faint, uses the same RTH or ETH filter as the closed calculation and never changes historical diagnostics. Missing footprint data is not treated as an empty signal: the chart reports INSUFFICIENT DATA with the reason instead of silently pretending that no absorption exists - even while the panel is hidden.
Hybrid volume mode adapts the minimum to a percentile of recent aggressive tick volumes inside the Days Look Back window. Pools are kept independently for bullish and bearish pressure and independently for RTH and ETH, with configurable regular hours in New York time; Combined mode is the one explicit way to pool them. Only closed bars enter the pool, the current candidate cannot move its own threshold, and the rolling session window is deterministic after a restart or recalculation.
The diagnostics panel explains rejected candidates - zero counterpart, ratio, volume, candle location, run length, stack volume and confirmation - and shows how often each lifecycle branch ran on your chart: touches, reactions, timeouts, rearms, breaks and expiries. A licensed one-click CSV export writes the current levels with origin time, session, zone, candle part, volumes, ratios, touches, uses and break bars for calibration on your own data. Platform alerts and Telegram can report activation, touch, successful use and break events. Everything is off by default, historical events are never replayed as live notifications, and Telegram delivery cannot block the calculation.
The same protected DLL is built for classic ATAS and ATAS X on the current .NET 10 runtime. The pure detection engine is covered by automated tests derived from the written technical specification and by a replay over real one-minute footprint data that checks every lifecycle branch and proves that the live path and a plain recalculation produce identical levels bar by bar.
Installation guide
2. Open or fully restart ATAS so the automatically delivered indicator becomes available in the indicator catalogue. Whenever an update is released through ATAS, fully restart the platform; ATAS downloads and loads the new version automatically.
3. Only if the OrderFlowSmith and ATAS e-mails are different, download OFS.ConfirmedAbsorption.dll from your OrderFlowSmith account and install it manually: %APPDATA%\ATAS\Indicators for classic ATAS or %APPDATA%\ATAS X\Indicators for ATAS X. After every update, download and replace the DLL manually, then fully restart ATAS. If Windows blocked the file, open DLL Properties and select Unblock.
4. Open a chart and add OFS ConfirmedAbsorption from the OrderFlowSmith group.
5. Paste your OFS license key into 01 - License. The key is verified locally.
6. Make sure the feed provides Bid/Ask footprint volume. If it does not, the chart shows INSUFFICIENT DATA with the reason; if the loaded history is shorter than Days Look Back, the notice says how many sessions are covered.
7. If your instrument has other regular hours than 09:30-16:00 New York, set RTH Start and RTH End in 05 - Session & Time.
8. Start with the defaults and calibrate Ratio, Stacked Levels, Minimum Volume, Confirm Close Distance and the lifecycle settings on your own data using the CSV export in 15 - Diagnostics.
Changelog — version 1.1.4
Check For Updates: unticking it and ticking it again now runs the version check immediately and shows the new-version card again, even if you had closed it for that version. Nothing else changed.
1.1.3 - PRODUCT ROW SHOWS THE NAME ONLY.
The Product row in 01 - License now shows the product name only. No internal code is displayed anywhere in the settings. Nothing else changed.
1.1.2 - SETTINGS TEMPLATE: LICENSE HEADER, USED COLOURS INSTEAD OF USED OPACITY, TELEGRAM IN ONE FORM. DETECTION AND LIFECYCLE LOGIC UNCHANGED.
The separate Used Opacity setting is gone: a level that passed a test now has its own Bullish Used Colour / Bearish Used Colour (10 - Visual) with the transparency in the colour itself; every further use fades the level again by the same ratio, exactly as before. Group 01 - License now reads Product, License Key, Website, Version and Check For Updates - the same header in every OFS indicator. The five Telegram rows (Enable Telegram, Bot Token, Chat ID, Get Chat ID Now, Send Test Message) carry the same names, order and help everywhere. Alerts stay off by default.
1.1.1 - CONTROL PANEL DEFAULTS TO TOP CENTRE; INSTANT CLICK FRAME.
The ABS / LONG / SHORT control panel now opens at the top centre of the chart (Control Panel Position in 12 - Control Panel; it used to be top left). A chart that already saved its own position keeps it. The white click frame on ABS / LONG / SHORT now appears on the very next repaint and follows the button (the same mechanism as OFS F4 WaveFade) instead of lagging behind the platform redraw. Detection, lifecycle and drawing logic are unchanged.
1.1.0 - REALTIME SEQUENCE: SEE A CONFIRMED LEVEL DURING THE BAR.
New Detection Mode (08 - Confirmation), off by default. Closed Bar keeps the audited behaviour - a level is confirmed only when the bar CLOSES beyond the zone, never repainted. Realtime Sequence draws the level solid the moment the forming live bar already closes beyond the zone, instead of waiting for the bar to finish; if price returns before the close it retracts. A faster live signal at the cost of intra-bar repainting. Closed history is always Closed Bar, so saved charts and past levels are unchanged.
The closed-bar detection is byte-for-byte identical - proven again by the replay determinism check over 68,512 bars - and five new engine tests cover the confirmed-then-retract flow (69 in total). Default colours stay green and red.
1.0.0 - FULL AUDIT AGAINST THE TECHNICAL SPECIFICATION.
Every rule of the written specification was checked against the code line by line, the engine was replayed over 68,512 real one-minute MNQ bars with simulated live ticks, and every lifecycle branch (touch, reaction, timeout, rearm, break, expiry by touches and by age) was measured on that data. The live path and a plain recalculation produce identical levels bar by bar.
Fixed: the adaptive volume percentile now uses the Days Look Back window as specified (it used Max Age before); Session Mode Combined is the one explicit way to pool RTH and ETH volumes - Chart template keeps them apart; Used Opacity is applied again after every successful test; the quality score measures volume against the effective threshold. Approach Start and Full Extend no longer clamp each other, so saved chart settings load exactly as saved.
New: RTH Start / RTH End in New York time (05 - Session & Time), Formation Counts As Use (09 - Lifecycle), Panel Background, Show Notices with an own position and offsets (11 - Panel) - the licence, INSUFFICIENT DATA and WARMING UP notices now appear with their reason even while the panel is hidden. Diagnostics show how often each lifecycle branch ran on your chart; the CSV export carries origin time, session, group, zone, candle part, volumes, ratios, touches, uses, first-return and break bars.
Display: levels use one anchored price scale (no vanishing at deep zoom), the touch marker sits on the bar of the current test, Broken Display no longer recomputes the history, and most numeric limits were widened. Settings groups follow the OFS template (05 - Session & Time up to 15 - Diagnostics); property names are unchanged, so saved charts keep their values.
0.2.0 - CONTROL PANEL: ABS, LONG AND SHORT AT ONE CLICK.
A small control panel with three buttons: ABS shows or hides the absorptions, LONG and SHORT draw the untouched levels of that side all the way to the current bar - only levels price has not come back to yet; a level price already returned to keeps its end bar. A distant absorption is therefore visible on the right edge before the market reacts to it. The buttons remember their state, and the panel is fully placeable: nine positions, X and Y offsets, font size, background and border colors. The retracted far lines are never shorter than their strength percentage, so the number no longer disappears. Detection and lifecycle logic are unchanged.
0.1.12 - PANEL LAYOUT AND VISIBILITY CONTROLS.
The main, license and insufficient-data panel variants now share all nine chart positions, including horizontal and vertical centering, and remain clamped inside the chart. The panel defaults to Off; when enabled it defaults to Top Right with 20 px offsets. Check for Updates remains enabled by default. Absorption detection and signal logic are unchanged.
0.1.11 - RELIABILITY AND LIVE-LIFECYCLE AUDIT.
Missing footprint data now reports INSUFFICIENT instead of looking like an empty signal. Adaptive pools keep the exact configured number of sessions, the initial scan covers every session required by the active level and percentile windows, and provisional candidates respect the selected RTH or ETH mode without changing historical diagnostics.
Live price movement and provisional candidates now request a throttled redraw, while a first touch redraws immediately. Shared render data is copied under one short lock, fonts and pens are reused, CSV export requires a valid license, and the Telegram worker is disposed with the indicator.
Reaction measurement now starts after the touch bar because closed OHLC data cannot prove whether that bar's extreme happened before or after the touch. Re-armed levels visibly enter TOUCHED again, successful retests return to USED, and broken levels remain for the configured number of bars even across a session boundary.
Historical alert startup is now one linear initialization pass instead of repeatedly scanning every accumulated level after every bar. Expired alert state is pruned. Diagnostics include location, stack-volume and missing-footprint counters. The release gate runs all pure-engine tests before building and obfuscating.
0.1.10 - The update card now describes what a new release brings.
0.1.8 - Recalculation performance was reduced from roughly two minutes to under one second in the 100,000-bar benchmark, and the documented touch, reaction, rearm, touch-limit and break lifecycle was restored.
0.1.7 - Absorption levels and strength labels moved behind the candles.
0.1.0 - First release of the documented, tick-precise confirmed-absorption detector.
Frequently asked questions
How is this different from the built-in ATAS Absorption indicator?
Why does a huge volume sometimes not get a line?
What data do I need?
Does it repaint?
What does Wicks Only mean and why is it the default?
What is the diagonal ratio?
What does USED mean?
When does a level disappear?
How should I set Minimum Volume for my instrument?
Why do the lines change length?
Does it work in ATAS X?
Does a confirmed level guarantee a bounce?
Why do I see so many lines with the defaults?
My instrument has other regular hours than the US session.
The panel is off - will I still see a problem?
Reviews
No reviews yet — be the first verified buyer to share your experience.