Table of Contents

Extension kinds and common rules

The developer API lets you add your own code to the platform in several places. Every kind of extension is an ordinary .NET class library that references the platform API; the same DLL runs in the classic ATAS and in ATAS X, as long as it does not use WPF types (see ATAS X and macOS).

Extension What it is Base type or marker Article
Chart indicator Calculates and draws on a chart from bars, trades and the order book Indicator Your first indicator
Chart strategy An indicator that also trades ChartStrategy Chart strategies
Heatmap indicator Draws on top of the Heatmap module from trades, profiles and MBO data HeatmapIndicator<TSettings>, [HeatmapIndicator] Heatmap indicators
SmartDOM column A column of the SmartDOM that draws its cells SmartDomColumn, [SmartDomColumn] SmartDOM columns
Watchlist column A column of the Watchlist: one value per instrument WatchlistColumn, [WatchlistColumn] Watchlist columns
Custom module A panel (classic ATAS) or widget (ATAS X) whose whole area your code draws PlatformModule, [PlatformModule] Custom modules
Connector A data feed: the instruments, trades and order book of an external source BaseConnector<…> with BaseConnectorSettings<…> Connectors

Stable ids

Heatmap indicators, columns and modules are identified by a stable id in their attribute, <vendor>.<name> (the vendor atas is reserved). The platform saves them in workspaces and templates under that id, so you can rename classes and namespaces freely, and a workspace keeps them, with their settings, while the DLL is missing.

One DLL, several extensions

A single assembly may contain any number of chart indicators, heatmap indicators, SmartDOM columns, Watchlist columns and custom modules: the platform scans every loaded assembly for all these kinds, so related tools (an indicator, the matching SmartDOM column and a dashboard module) can share code and ship as one file.

Connectors are the exception: they are loaded from a different folder, once at start-up, and cannot be unloaded while the platform runs. Ship a connector as a separate DLL that contains nothing else.

Where the DLL goes

The folders of each kind, the Add custom indicator button and the reload rules are described in Project setup.

Tariffs and distribution

Some parts of the API can be restricted by the user's tariff; a restricted extension stays listed, keeps its settings and must keep working with less data: Tariffs. Giving other users access to your DLL through the Personal Area, with the [FeatureId] attribute: Distribution.