Loading...
Searching...
No Matches
Developer API and tariffs

Some parts of the developer API can be restricted by the user's ATAS tariff. The restrictions apply only to third-party code: indicators, strategies, heatmap indicators, SmartDOM and Watchlist columns and custom modules loaded from the Extensions / Indicators / Strategies folders, installed from the marketplace, or compiled in Script Lab, and connectors loaded from the CustomConnectors folder. The built-in ATAS indicators are never restricted by them.

The tariff is checked when your code asks for the data or subscribes to it, so a restriction can appear or disappear while the platform is running (for example, after the user logs on with another account). Objects your code obtained before a restriction appeared — an MBO cache, an option quote subscription, the MBO data source of a heatmap indicator — can keep working until the chart or the heatmap is reopened. In the other direction, a heatmap indicator that was added while its MBO data was restricted gets MBO data only after it is added again or the heatmap is reopened. Your code must not crash or hang when a part of the API is unavailable — treat it like an instrument or a connection that does not provide that data.

What can be restricted and what your code observes

API When restricted, your code observes
Market-by-order (MBO) data in indicators and strategies (SubscribeMarketByOrderData, MarketByOrders, OnMarketByOrdersChanged, GetMarketByOrdersCache, GetMarketByOrdersWithTradesCache, IMboAnalyticsDataProvider) The subscription completes but no data arrives: MarketByOrders and the caches are empty, OnMarketByOrdersChanged and the MBO analytics events are not raised, the GetMbo… methods return empty lists, MboAnalyticsDataStatus.IsStarted is false.
MBO data in heatmap indicators (IHeatmapMboConsumer) ProcessMboAsync is never called and IHeatmapIndicatorContext.MboDataSource is null. The other callbacks (ticks, profiles, timer) work as usual.
Options data (IOptionsDataProvider) IsAvailable is false, GetOptionSeriesAsync / GetOptionsAsync return empty collections, SubscribeToOption throws InvalidOperationException — exactly as when no options-capable connector is connected.
Heatmap indicators from your own assemblies The indicator is listed in the heatmap indicators window, but adding it shows the tariff banner; instances saved earlier in a template do not run.
SmartDOM columns from your own assemblies The column is listed in the SmartDOM columns settings, but adding it shows the tariff banner; columns saved earlier in a layout stay in it as empty «Not available» columns — the platform does not create or call them, and their settings are kept.
Watchlist columns from your own assemblies The column is listed in the Watchlist column chooser, but showing it opens the tariff banner and the column stays hidden; columns shown in a saved layout stay in it as empty «Not available» columns — the platform does not create or call them, and their settings are kept. The SmartDOM and Watchlist columns are restricted together.
Connectors from your own assemblies The connector is listed in the «Add connection» dialog, but choosing it shows the tariff banner; connections added earlier stay in the connections list as unavailable («Custom connectors are not available on your current plan») and are not connected, automatically or manually. Their settings are kept.
Custom modules (panels / widgets) from your own assemblies The module is listed in the «Custom modules» menu, but opening one shows the tariff banner and the panel shows «Not available»; panels saved earlier in a workspace stay in it as «Not available» panels — the platform does not create or call the module, and its settings are kept. A module running when the restriction appears is stopped (OnDispose is called). Modules get no MBO data in any case.
Market data of additional instruments in custom modules (IPlatformModuleContext.AddInstrument) The instrument is added, but its State is NotAllowed and the module gets no callbacks for it; the selected instrument of the panel works as usual. The same state is reported when the tariff's limit of simultaneously open instruments is reached. The instrument becomes Active by itself when the restriction is lifted.

Recommendations

  • Check availability before relying on the data: OptionsDataProvider?.IsAvailable, the MBO status (HeatmapMboDataSnapshot.Status, MboAnalyticsDataStatus), or simply tolerate empty collections.
  • Keep the rest of the indicator working: an indicator that combines trades and MBO data should still draw its trade-based part when MBO data is empty.
  • Do not show error dialogs or retry in a loop when data is missing; the platform logs the restriction once per indicator.

Related articles