OFS Iceberg Detector
Proves hidden size instead of guessing it: reads market-by-order data and shows the price levels where a single order kept refilling from a hidden reserve.
| Current version | 1.3.5 · 2026-10-29 |
| Compatibility | ATAS 8.0.14+ and ATAS X 8.0.14+ |
| Requirements | Windows 10/11, .NET 10, ATAS or ATAS X, market-by-order data feed |
| Updates | All future updates included |
| Delivery | ATAS catalog (automatic) |
Description
OFS Iceberg Detector finds the orders that hide their real size - and it proves them instead of guessing.
WHAT AN ICEBERG IS
A large participant who wants to buy 500 contracts does not show 500 in the book. They show 10, let it get filled, show another 10, and repeat. On the screen it looks like thin liquidity that somehow never runs out. Price stalls at a level with no visible reason, and the reason is that the size was never visible in the first place.
WHY MOST TOOLS ONLY GUESS
A tool that reads the aggregated depth of a price level can only notice that more traded than it could see, and then hope no other order arrived or left in the meantime. That assumption breaks constantly in a fast book, which is why level-based iceberg detection produces so many false marks.
Put side by side with such a detector, this one will mark fewer icebergs and mark them later - by design, not by weakness. A level-based tool cannot tell one hidden participant from a queue of small orders taking turns, so part of what it marks is ordinary book traffic. Here a false mark is close to impossible by construction: the claim is arithmetic on one order, not an impression of a level. Quantity was deliberately traded for certainty.
HOW THIS ONE PROVES IT
This indicator reads Market-By-Order data, where every resting order carries its own identifier. That makes it possible to measure hidden size on one order instead of guessing it from a whole price level - arithmetic, not inference.
Trades that cannot be attributed with certainty are never counted as evidence, and the panel reports how many there were.
THREE LEVELS OF EVIDENCE
Every level says how strongly it is established, and never claims more than it knows.
PROVEN - the hidden size is measured on one order.
REFILLED - the same order kept growing back after being hit, repeatedly. An ordinary order does not grow back after being eaten.
ROTATED - the level kept being refilled by replacement orders, the way some venues rotate tranches. This is indirect evidence, it has its own separate count because it needs more repetitions to mean anything, and it can be switched off entirely.
THRESHOLDS ONLY EVER CHANGE WHAT YOU SEE
No volume threshold takes part in detection. The engine records every iceberg it can establish, however small, and the minimum volumes decide only what is worth drawing. Lower one and everything already found reappears immediately; the diagnostic log contains the findings below the threshold too. A tool where the filter sits inside the detection quietly destroys the evidence you later go looking for.
WHAT IS DRAWN
Two things, and no bands across the chart - a line spanning the whole screen covers the price action and says less than what replaces it.
An iceberg here is an ORDER, identified by its exchange order id. Two different orders defending the same price are two icebergs; one order that replenishes twenty times is one iceberg with twenty tranches. Nothing is inferred from the price.
FIRST, a circle for each iceberg, at its exact price and on the bar where it was established, so it sits in the price action where it happened. Several icebergs at one price show as several circles. Its size follows the volume that level absorbed, between a minimum and a maximum you set. Each side has its own color and the transparency lives inside that color, so one setting decides both. And when the order behind an iceberg moves to another price and proves itself again, the old circle stays with what it earned there and a dashed line links it to the new one - two circles, one participant.
SECOND, a tree beside the price. Each branch sits at the price it belongs to and grows towards the side that was defending it, and its length is the volume that level absorbed. Just past the end of the branch stands the number of contracts absorbed there, written in the color of the branch itself - the same number the length is drawn from, so the two can never disagree. Contracts that arrived in the last moments are added beside it in the highlight color, so a level being hit right now says +40 instead of looking like any other.
Until the first iceberg appears, a neutral alignment guide without any title shows the exact tree position and row thickness. It carries no price or volume, switches itself off with the first iceberg (a newly opened chart shows it again) and can be turned off entirely.
That is all the chart draws. The evidence level and the hidden size are in the card at the mouse, in the panel and in the log, because a line of text beside every level covers the price action it is meant to explain. An iceberg whose order still stands in the book is drawn in full colour, a finished one faded. A one-line control panel at the top switches the circles, the tree and the panel and sets from how many filled contracts an iceberg is drawn; everything is off until you switch it on.
A branch and its circle brighten AND grow the moment the level takes more size, then fade back - a color change on its own is easy to miss on a busy chart, and both the color and how much it grows are settings. On top of that, the branch keeps a softer glow for as long as its +5 increment is shown, fading out with it - so the levels being defended right now are visible at a glance, not only in the instant they grow. A level being defended right now is distinguishable from one defended twenty minutes ago.
Nothing you have found is taken off the chart again, and there is no ceiling that could take it. No distance filter hides a level once price walks away - the whole point of knowing where size was absorbed is what happens when price returns there - and there is no maximum number of icebergs to drop the oldest or the smallest. A ten-contract iceberg and a thousand-contract one are both kept. The volume floors default to zero and exist only if YOU decide the small ones are in your way.
Every color used for market information is yours: circles, branches, numbers, increment and highlight. Transparency lives inside each color rather than in a second setting beside it. The neutral alignment guide deliberately keeps a fixed non-market color so it cannot be mistaken for a bid or ask iceberg.
The context panel says in words whether order data is flowing, how many resting orders are followed, how many levels and how many iceberg orders were found, how many trades could not be attributed, and where the strongest one sits relative to price.
HONESTY
Market-By-Order data is required. Without it the indicator draws no market evidence and the panel says why. The only optional graphic that may remain is the neutral alignment guide, which carries no price or volume - there is no silent fallback to a weaker detection method, because a weaker method dressed up as this one would be worse than nothing.
Every mark can be audited. The diagnostic log records, for every finding, which order id it stands on, when, and why - so you can check any mark yourself instead of taking it on faith. And the indicator admits its own blind spots: the panel counts the trades it could not attribute - no order id, an unknown id, an ambiguous assignment - so you always know how much of the flow it actually saw. A detector that cannot tell you what it missed cannot tell you what its marks are worth.
Order flow cannot be replayed from chart history, so the detection engine works forward from the moment it is on the chart - deterministic, with a diagnostic log you can read yourself. With ATAS 8.0.15 or newer a reloaded chart still is not empty: the indicator takes the icebergs the platform's own market-by-order analytics already knows and draws them where they began, and the panel shows how many icebergs the platform and this engine each found.
The engine is separated from the platform and covered by its own unit tests, including the cases that defeat most iceberg detectors. It has also been replayed over real MNQ order-by-order recordings against an independent ledger built from the raw events, so every proven iceberg it reports has been checked to the contract on real data.
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. If your ATAS account uses a different e-mail address than your OrderFlowSmith account, write to us at orderflowsmith.com/contact - we move the license to your ATAS e-mail and ATAS delivers the indicator automatically.
4. Add the indicator to a chart and paste your license key into Settings, group 01 - License.
5. Market-By-Order data is required. A Rithmic subscription that includes order-by-order depth is known to work. If the notice says No market-by-order data, the feed is not delivering it and nothing will be detected.
6. Until the first iceberg appears, the neutral alignment guide shows exactly where the tree will sit. Adjust Offset From Right Edge and Row Height in group 10 - Level Tree; the guide switches itself off with the first iceberg and can also be switched off there (Show Alignment Guide).
7. Start with the defaults - they hide nothing. If the chart is busier than you want, raise Hidden Volume Floor or Filled Volume Floor in group 06 - Detection; nothing is thrown away by doing so, and lowering them again brings everything back.
Changelog — version 1.3.5
- The waiting and error notices are off by default, also on saved charts - switch them on with Show Notices. A missing or invalid licence is always shown.
- Notices start 50 px from the top, below the row of hidden panel buttons (Notice Offset Y), and the notices of several OFS indicators stack below each other by themselves - they never cover a control panel or a hidden panel button.
- The hidden panel button shows a dot before the name: green when anything on the control panel is switched on, an empty grey ring when everything is off - you see at once which indicator draws on the chart.
1.3.4 - NO FALSE ICEBERGS FROM THE ATAS HISTORY WHEN TWO CONNECTIONS DELIVER MARKET DATA.
- With two connections delivering market data for the same instrument, the platform's own market-by-order analytics receives every trade twice as well, and almost every traded order appeared there as an iceberg. Those icebergs came onto the chart through History From ATAS. As soon as the indicator recognises the double data, it no longer takes icebergs from the ATAS analytics on that chart - neither the history nor live ones - until the chart is reloaded. The panel row "ATAS history" says "not used - market data arrive twice" and the notice adds one line.
- The indicator's own detection is unchanged: every trade counts once.
- Nothing changes with a single data connection.
1.3.3 - CORRECT ICEBERGS WHEN TWO CONNECTIONS DELIVER MARKET DATA.
- With two connections in ATAS that both deliver market data for the same instrument - for example one Rithmic account for trading and another one for market-by-order data - every trade and every order book change arrived twice, and almost every traded order was marked as an iceberg. The indicator now recognises the copies from the second connection and counts every trade once: the icebergs are the same as with a single connection.
- When it happens, a notice says so for one minute (Show Notices); with the panel on, the row "Data: arrives twice - copies ignored" stays while it lasts.
- Nothing changes with a single data connection.
1.3.2 - LOG: ONE SWITCH, ITS OWN FOLDER.
- New in 15 · Log: Log (on / off, off by default) and Log Folder. Switched on, the indicator writes everything it does into its own log - its settings and every change of them, the chart, the calculation, the market-by-order data and the ATAS history it got, every new iceberg and every stronger proof, its alerts and errors and what the panel shows. Keys, tokens and IDs are never written.
- The files go into the folder of the indicator inside Log Folder, for example D:\logs\OFS Iceberg Detector - one file per chart and day, with the computer and the platform in the file name.
- Diagnostic Log (Off / Events) is replaced by this one switch - a saved chart with Diagnostic Log on has Log on. The CSV of every detection decision is written next to the log while Log is on (until 1.3.1 in %LOCALAPPDATA%\OrderFlowSmith\diag). Panel Diagnostics stays below Log Folder.
1.3.1 - THE PANEL AND THE NOTICES NO LONGER HIDE BEHIND THE CONTROL PANEL.
- The information panel and the notices no longer hide behind an open control panel: where the control panel covered them (top right on a narrower chart), they now sit just below it. Without overlap nothing moves.
1.3.0 - HISTORY FROM ATAS, LIVE AND FINISHED ICEBERGS, A CARD AT THE MOUSE AND A CONTROL PANEL.
- New: history from ATAS (8.0.15 or newer). When the chart loads, the indicator takes the icebergs the platform's own market-by-order analytics already knows - the same source as the ATAS Icebergs Tracker - and draws them on the candle where each began, so a reloaded chart is no longer empty. Live detection is still this indicator's own engine; the same order found by both is one iceberg, and icebergs the platform finds live are added too. The panel shows how many each found since the chart loaded (ATAS check: both / OFS only / ATAS only). Setting History From ATAS in 06 - Detection, on by default.
- New: an iceberg whose order still stands in the book is drawn in full colour, a finished one faded; a tree branch stays bright while a live iceberg stands on it.
- New: hover over a circle or a tree branch for its card - side, price, shown / filled / hidden contracts, time, proof, live or finished and the source (OFS, ATAS or both).
- New: one-line control panel at the top of the chart - MIN - 0 + | MARKERS TREE | PANEL (MIN = Filled Volume Floor). Everything is off by default. HIDE hides it into a small button; the hidden buttons of all OFS indicators line up side by side by themselves at the top (5 px) and open control panels stack below each other (40 px). Settings in the new group 12 - Control Panel; Alerts, Telegram and Log are now the groups 13, 14 and 15.
- Show Markers and Show Tree are off by default for a newly added indicator; a saved chart keeps its own setting.
1.2.19 - ALERTS AND TELEGRAM IN WORDS; TEXTS MATCH THE INDICATOR.
- An alert and the Telegram message now say it in words, for example "ICEBERG PROVEN BID @ 21500.25 hidden 120 MNQZ6", followed by the machine-readable details. Until now Telegram received only a technical record.
- The red outage frame of the panel returns to normal after 4 s of healthy data (10 s after lost data or a lost connection) instead of 30 s.
- Descriptions, the product page and the manual now describe the alignment guide as it works (no title, it switches itself off with the first iceberg), name the notice "No market-by-order data" exactly as the chart shows it and point to 12 - Alerts.
1.2.18 - RED PANEL FRAME WHEN THE CONNECTION OR THE DATA DROPS; LOG FOLDER.
- New: the indicator watches the connection and the market data - the account connection (for example Rithmic) lost for more than 15 s, no market data for 15 s while CME is trading, or the data more than 5 s late. While that lasts, the panel gets a thick red frame; the indicator keeps working, and the frame returns to normal after 30 s of healthy data. No alert and no sound. Setting Panel Outage Frame (on by default) in the panel group.
- New: Log Folder (in the Log group) - the folder for the diagnostic CSV files, for example D:\logs; the files go into a subfolder named after the computer, so two computers can share one synchronised folder. Empty = %LOCALAPPDATA%\OrderFlowSmith\diag as until now.
1.2.17 - ALERTS: SOUND ONLY, NO POPUP WINDOW.
- When an alert fires, the indicator only plays its sound - no popup window appears on the chart.
1.2.16 - A SHORTER SETTINGS LIST; CLEARER TEXTS.
- The settings list shows what is yours to tune: the evidence rules and the book hygiene of the engine are no longer listed and keep their measured values. Saved charts keep every value.
- The notice about the order-book safety limit no longer points to a setting.
- Setting descriptions and the manual say what each setting changes on the chart.
1.2.15 - THE NEW-VERSION CARD POINTS TO ATAS; SHORTER CHANGELOG.
- The new-version card now says that ATAS delivers the new version to your platform automatically (until 1.2.14 it pointed to a download in your account on orderflowsmith.com, which is no longer offered).
- Versions 0.1.0 to 1.1.13 keep their headline only, so the product card shows the whole history.
- Nothing else changed.
1.2.14 - PRODUCT NAME IN TELEGRAM.
- Telegram messages start with the product name [OFS Iceberg Detector] instead of a short internal code.
1.2.13 - THE NEW-VERSION CARD HAS ONLY THE CLOSE BUTTON.
The card announcing a new version no longer has a cross in its top corner - the Close button at the bottom is the only way to close it, the same in every OFS indicator. Closing it still remembers that version, so the card does not come back until the next release. Nothing else changed.
1.2.12 - THE ALIGNMENT GUIDE HAS NO TITLE AND SHOWS ONLY UNTIL THE FIRST ICEBERG.
The tree alignment guide - the neutral ruler that shows where the level tree will sit - no longer carries the title TREE ALIGNMENT GUIDE - NOT MARKET DATA. It is shown only until the first iceberg appears on the chart; then it switches off and does not come back, even when no tree row is on screen (until 1.2.11 it returned every time the tree was out of view). A newly opened chart shows it again until its first iceberg. Show Alignment Guide (10 - Level Tree) still turns it off completely.
1.2.11 - DRAW ABOVE CANDLES IN THE WHOLE FAMILY; NOTHING OVER THE PANELS OF OTHER INDICATORS.
The icebergs followed only their own Draw Above Candles switch. ATAS applies the order to the whole price panel, so when another indicator put the panel above the candles, the icebergs were in the live layer that ATAS then draws only while the last bar is on screen - after scrolling back they disappeared. They now follow the real order of the panel and are always there.
Draw Above Candles stays off by default; its description now says that it applies to the whole panel.
1.2.10 - CHECK FOR UPDATES CHECKS AT ONCE; THE NEW-VERSION CARD ALWAYS IN THE MIDDLE OF THE CHART.
Unticking Check For Updates in the settings and ticking it again now asks orderflowsmith.com for the latest version straight away and, when a newer version exists, shows the card at once - also on a weekend or in a quiet market with no new ticks. Until now the check started only if the chart happened to redraw between the two clicks, so without ticks nothing happened, and the answer waited for the next redraw. Ticking it again also brings back a card you closed earlier.
The new-version card always opens in the middle of the chart, whatever the position of the control panel or the notices of the indicator. Nothing else changed: the calculation, the settings and saved charts stay as they were.
1.2.9 - SETTINGS IN THE COMMON OFS ORDER; CHECK FOR UPDATES ON DEMAND.
The settings window follows the same layout in every OFS indicator: 01 License first (product, key, website, version, Check For Updates), then Session and Time where it applies, the indicator's own groups, and at the end Panel, Alerts, Telegram and Log. Saved charts keep all their values - only names and the order of the groups changed.
Check For Updates now also works on demand: untick it and tick it again and the indicator asks orderflowsmith.com straight away - a new-version card you closed earlier comes back as well. Until now the switch promised this but the check waited for its daily turn.
In this indicator: Alerts and Telegram close the gap in the numbering (12 and 13), the diagnostic group is now 14 - Log, and the panel rows read Panel Position, Panel Offset X/Y and Panel Font Size like everywhere else.
1.2.8 - LIVE TREE AND CIRCLES: THE FLASH, THE GLOW AND THE +5 NOW MOVE WITH THE DATA.
The circles and the level tree were drawn in the platform layer that ATAS repaints only with a new candle, a scroll or a zoom - the ordinary chart refresh the indicator asked for repaints the panel only. On a one-minute chart the tree, the +5 of newly arrived contracts, the short flash and the glow therefore changed at most once a minute. They are now drawn in the layer the platform repaints with every tick, still behind the candles, and when the book changes without a trade the chart is refreshed at most five times a second; the flash, the glow and the +5 fade smoothly while the data flows. With Draw Above Candles on, the content stays in the layer that also shows when you scroll back.
Every display setting now repaints the chart at once, also on a quiet market.
Settings: numbers have no upper limit any more - only a logical minimum (for example Minimum Refills at least 1, Maximum Tracked Orders at least 1,000); panel and notice offsets are free in both directions.
Detection is unchanged: the 155 engine checks pass and the replay over real MNQ market-by-order recordings still confirms every PROVEN iceberg (16 of 16 and 9 of 9) with none missed.
1.2.7 - INTERNAL: THE CHART DRAWING IS SHARED WITH OFS ENTRYDESK. NOTHING CHANGES ON YOUR CHART.
The markers, the level tree, the numbers, the flash and the alignment guide moved into a shared painter so that OFS EntryDesk shows exactly the same tree. Every setting, default and pixel is unchanged; the 155 engine checks pass as before.
1.2.6 - MANUAL UPDATE CHECK.
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.2.5 - 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.2.4 - SETTINGS TEMPLATE: LICENSE HEADER, ALERT SOUND UNDER THE ALERT SWITCH, TELEGRAM IN ONE FORM. DETECTION LOGIC UNCHANGED.
Group 01 - License now reads Product, License Key, Website, Version and Check For Updates - the same header in every OFS indicator. In 13 - Alerts the Alert Sound sits right under Enable Alerts, followed by the event switches. The five Telegram rows carry the same names, order and help as every other OFS indicator. Alerts stay off by default.
1.2.3 - A SMALLER PANEL: TRADING ROWS ONLY, TECHNICAL ROWS BEHIND ONE SWITCH.
The panel now shows what matters while trading: icebergs and levels, evidence (proven / refilled / rotated), the strongest iceberg, the nearest above and below, and the version and licence footer. The technical rows - data state, orders tracked, snapshots reconciled, marks and levels drawn, trades used / without id / unknown / rejected, the trade field that carried the passive id, and the drawing-layer counters - are still there, behind Panel Diagnostics in 15 - Diagnostics (off by default). Nothing was removed from the engine or the diagnostic log.
1.2.2 - THE PANEL IS THE STANDARD OFS PANEL FROM THE FIRST BOOK UPDATE, IT STAYS INSIDE THE CHART, AND DIAGNOSTICS IS THE LAST GROUP.
With Show Panel on you now get the same panel as in every OFS indicator - counters, strongest and nearest icebergs, version and licence footer - from the first book update on, whether or not an iceberg has been found yet. The separate waiting badge and the Waiting Notice setting are gone: with the panel on you see the panel, with it off nothing, and faults follow Show Notices.
The panel, the notices and the update card are placed inside the visible chart region like in every other OFS indicator; before, the default top-right panel could overhang the right edge of the window under the price scale.
The Diagnostic Log moved to the last settings group, 15 - Diagnostics, after Alerts and Telegram, as in every OFS indicator. Detection and evidence logic are unchanged.
1.2.1 - A HIDDEN PANEL NO LONGER HIDES A PROBLEM.
Since 1.1.17 every notice followed Show Panel, and the panel is off by default - so a chart without a licence or without market-by-order data stayed silent. Notices now have their own switch, Show Notices (on by default), their own nine-point position and X/Y offsets, independent of the panel. Error states - missing or rejected licence, no market-by-order data, order-book safety limit, book updates without order ids, trades that cannot be matched, display filters that removed everything - are drawn while the panel is hidden. Waiting for the first iceberg is normal work, not a fault, so it is still shown only with the panel on, according to Waiting Notice.
New: Panel Background - one colour with transparency in its alpha channel, used by the panel, the waiting badge and the notices. Detection and evidence logic are unchanged.
1.2.0 - MEASURED ON REAL ORDER-BY-ORDER RECORDINGS; THREE THINGS THE DATA CHANGED.
1.1.17 - PANEL LAYOUT AND VISIBILITY CONTROLS.
1.1.16 - THE TREE CAN BE POSITIONED BEFORE THE FIRST ICEBERG, AND SEVEN AUDIT EDGE CASES ARE FIXED.
1.1.15 - THE UPDATE CARD NOW TELLS YOU WHAT IS NEW.
1.1.14 - THE PANEL AND THE NOTICES SIT ABOVE THE CANDLES, AND THE NEW-VERSION CARD ALWAYS SHOWS.
1.1.13 - NEW UPDATE CARD, CENTRED AND WITH DIRECT LINKS.
1.1.12 - CIRCLES AND MOVE ARROWS SIT ON THE WICK TO THE PIXEL.
1.1.11 - MARKERS SIT EXACTLY ON THEIR PRICE LEVEL.
1.1.10 - ALERT SOUND IS A LIST WITH A PLAY BUTTON.
1.1.8 - THE UPDATE CARD'S CLOSE BUTTON IS A REAL BUTTON - a framed, highlighted square instead of a faint cross, comfortably clickable.
1.1.7 - THE PANEL FOOTER NO LONGER SHOWS YOUR E-MAIL ADDRESS.
1.1.6 - A NEW VERSION NOTICE.
1.1.5 - LICENCE GATE ON NOTIFICATIONS.
1.1.3 - waiting for the first iceberg no longer takes a wide box on the chart.
0.3.3 - the product texts now say openly how this compares with level-based detectors.
0.3.2 - the waiting notice says what is actually happening.
0.3.1 - numbers in the tree stop disappearing, and active branches glow.
0.3.0 - a deep audit: moved orders, stable drawing, centred circles.
0.2.5 - the passive side of a trade is now DETERMINED, not assumed. This is what stopped it finding anything.
0.2.4 - the status numbers were only refreshed when something was found.
0.2.3 - the three defects a full code audit turned up, and an empty chart that explains itself.
0.2.2 - fixes a regression from 0.1.9 that could hide the whole tree.
0.2.1 - no ceilings, and the tree says contracts.
0.2.0 - an iceberg is an ORDER, not a price.
0.1.9 - drawing survives zooming, levels cannot be hidden, numbers match the bars.
0.1.8 - a number instead of a sentence, every color yours, and levels that stay.
0.1.7 - circles in the candles, where the iceberg actually happened.
0.1.6 - the tree is the whole chart output, and it says how many.
0.1.5 - a trade now has to prove it was absorbed, and thresholds stop destroying evidence.
0.1.4 - findings from a full code audit.
0.1.3 - the chart is readable again: the tree carries the information, the price carries only the strongest levels.
0.1.2 - the tree and the levels showed only proven icebergs.
0.1.1 - the context panel is off by default.
0.1.0 - first release of OFS Iceberg Detector.
Frequently asked questions
How is this different from an iceberg detector that reads the DOM?
Why does it show fewer icebergs than level-based detectors?
What data do I need?
Why does everything disappear when I reload the chart?
What is the difference between PROVEN, REFILLED and ROTATED?
Can I turn off the weaker evidence?
Does it repaint?
Do levels disappear once price moves away?
What do the two numbers beside each branch mean?
Will it slow the chart down?
What does the number beside each branch mean?
What happens when I reload the chart?
I use two connections in ATAS - one for trading and one for market data. Does that matter?
Reviews
No reviews yet — be the first verified buyer to share your experience.